SQL筛选语句

博客介绍了两种SQL查询员工信息的方法。第一种通过子查询获取员工部门名称,定义了自定义变量emp_dept_name;第二种使用多表连接查询员工姓名、部门ID和部门描述,通过员工ID和部门ID关联表。

select emp_name,emp_dept_id,emp_empl_id,emp_dept_name=(select dp_description from t_department where dp_dept_id=emp_dept_id) from t_employee where emp_empl_id='"&replyname&"'

其中emp_dept_name为用户自定义变量,不可与t_employee中字段相同.

另外一种方法

select t_employee.emp_name,t_employee.emp_dept_id,t_department.dp_description from t_employee,t_department where t_employee.emp_empl_id='"&replyname&"' and t_employee.emp_dept_id=t_department.dp_description

<think>我们参考了站内引用,特别是引用[1]介绍了CASE语句在条件聚合中的应用,引用[2]和[3]展示了条件筛选的实际案例,引用[4]和[5]则涉及了筛选语句的编写技巧和注意事项。 用户需求:获取SQL筛选语句的编写指南 我们将从以下几个方面进行指导: 1. 筛选语句基础(WHERE子句) 2. 使用逻辑运算符组合多个条件 3. 使用IN和BETWEEN进行范围筛选 4. 使用LIKE进行模式匹配 5. 使用CASE语句进行条件筛选(动态条件) 6. 使用HAVING子句对分组后的结果进行筛选 7. 注意事项和常见错误 注意:不同数据库系统(如MySQL, SQL Server, Oracle)在某些语法上可能有差异,我们将尽量使用通用的SQL语法,并指出一些常见差异。 下面逐一展开: </think>### SQL筛选语句编写指南 SQL筛选语句主要通过`WHERE`、`HAVING`和`CASE`等子句实现数据过滤,结合逻辑运算符和函数可满足复杂条件需求。以下是编写指南及示例: --- #### **1. 基础筛选:`WHERE`子句** 用于过滤行级数据,支持运算符(`=`, `>`, `<>`等)和逻辑操作(`AND`, `OR`, `NOT`)。 **示例**:筛选数学和语文成绩均高于98分的学生(引用[2]): ```sql SELECT * FROM 成绩管理 WHERE 班级 = '1班' AND 数学成绩 > 98 AND 语文成绩 > 98; ``` --- #### **2. 多条件组合:`IN`和`BETWEEN`** - **`IN`**:匹配列表中的任意值 ```sql SELECT * FROM 产品表 WHERE 类别 IN ('电子产品', '家居用品'); ``` - **`BETWEEN`**:范围筛选(包含边界) ```sql SELECT * FROM 订单表 WHERE 金额 BETWEEN 100 AND 500; ``` --- #### **3. 模糊匹配:`LIKE`和通配符** - `%`:匹配任意字符序列 ```sql SELECT * FROM 客户表 WHERE 姓名 LIKE '张%'; -- 姓"张"的客户 ``` - `_`:匹配单个字符 ```sql SELECT * FROM 产品表 WHERE 产品编号 LIKE 'A_01'; -- 如"A101", "A201" ``` ⚠️ **注意**:部分数据库(如MySQL)不支持`[^0-9]`(引用[4]),需改用正则表达式函数(如`REGEXP`)。 --- #### **4. 聚合后筛选:`HAVING`子句** 对分组结果过滤(常与`GROUP BY`联用)。 **示例**:筛选每门课均≥70分的学生(引用[3]): ```sql SELECT 学生姓名 FROM 成绩表 GROUP BY 学生姓名 HAVING MIN(分数) >= 70; -- 确保最低分≥70 ``` --- #### **5. 动态条件:`CASE`语句** 实现条件分支逻辑,常用于聚合中的动态筛选(引用[1])。 **示例**:按成绩区间统计学生人数: ```sql SELECT SUM(CASE WHEN 分数 >= 90 THEN 1 ELSE 0 END) AS 优秀人数, SUM(CASE WHEN 分数 BETWEEN 70 AND 89 THEN 1 ELSE 0 END) AS 良好人数 FROM 成绩表; ``` --- #### **6. 子查询筛选** 嵌套查询结果作为条件。 **示例**:筛选部门名称匹配的员工(引用[5]): ```sql SELECT 员工姓名, 部门ID, (SELECT 部门描述 FROM 部门表 WHERE 部门ID = e.部门ID) AS 部门名称 FROM 员工表 e WHERE 员工ID = '指定ID'; ``` --- #### **7. 常见错误与优化** - **错误**:混淆`WHERE`(行级筛选)与`HAVING`(聚合后筛选)。 - **优化**: - 对筛选字段建立索引加速查询。 - 避免`LIKE '%前缀'`(无法使用索引),改用全文检索。 - 复杂逻辑优先用`CASE`替代多层嵌套子查询。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值