not case when m is not null then r.sal >= m -> when c > 0 then null -> else false end as c
时间: 2024-05-12 11:14:17 浏览: 88
这是一个 SQL 查询中的 CASE 表达式,它的语法结构如下:
```
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE default_result
END
```
在这个查询中,CASE 表达式被用来生成一个名为 c 的列。该列的值根据条件表达式的结果而定。
具体来说,该条件表达式包括三个部分,分别为:
1. `not case when m is not null then r.sal >= m`:如果 m 不为 NULL,则将 r.sal 是否大于或等于 m 的结果取反。
2. `when c > 0 then null`:如果 c 大于 0,则将 c 的值设为 NULL。
3. `else false`:否则将 c 的值设为 FALSE。
最终生成的 c 列的值将根据上述条件表达式的结果而定。
相关问题
mysql支持select sal, cast(null as integer) IN ( select case when deptno > 10 then deptno else null end from dept where deptno < 0) from emp;吗
这个语句在 MySQL 中是不支持的,因为 MySQL 不允许将 NULL 与整数进行比较。如果你想要在 MySQL 中实现类似的功能,可以使用 IFNULL 函数来处理 NULL 值。例如,你可以使用以下语句来获取 sal 列和一个表示是否满足条件的标志:
```
SELECT sal, IF(deptno > 10 OR deptno IS NULL, 1, 0) AS flag FROM emp LEFT JOIN dept ON emp.deptno = dept.deptno WHERE deptno < 0;
```
这个查询使用了左连接来将 emp 表和 dept 表连接起来,并使用 IF 函数来判断 deptno 是否大于 10 或者为 NULL。如果满足条件,则返回 1,否则返回 0。注意,这个查询中的 WHERE 子句是必需的,因为它限制了 deptno 的范围,以避免出现 NULL 值。
10-13 请编写出包含员工姓名,工资、工资级别的SELECT语句。 分数 5 作者 张爽 单位 广东东软学院 请编写出包含员工姓名,工资、工资级别的SELECT语句,其中工资级别使用CASE语句完成,按照emp表中的实际工资进行分类。工资小于6000元的为level1(一级),工资在6000到6500之间(不包含6500)的为level2(二级),工资在6500到7000之间(不包含7000)的为level3(三级),其余为level4(四级)。查询结果按工资升序排列,查询结果如下输出样例所示。 表结构: 请在这里写定义表结构的SQL语句。例如: CREATE TABLE emp ( empno INT(4) PRIMARY KEY COMMENT'员工编号', ename VARCHAR(10) NOT NULL COMMENT'员工姓名', job VARCHAR(10) COMMENT'员工岗位', hiredate DATE COMMENT'入职日期', sal DECIMAL(7,2) COMMENT'工资', deptno INT(2) NOT NULL COMMENT'部门编号' ) ; 表样例 请在这里给出上述表结构对应的表样例。例如
CREATE TABLE emp (
empno INT(4) PRIMARY KEY COMMENT '员工编号',
ename VARCHAR(10) NOT NULL COMMENT '员工姓名',
job VARCHAR(10) COMMENT '员工岗位',
hiredate DATE COMMENT '入职日期',
sal DECIMAL(7,2) COMMENT '工资',
deptno INT(2) NOT NULL COMMENT '部门编号'
);
INSERT INTO emp VALUES (1, '张三', '经理', '2021-01-01', 8000, 1);
INSERT INTO emp VALUES (2, '李四', '工程师', '2021-02-01', 6000, 2);
INSERT INTO emp VALUES (3, '王五', '销售员', '2021-03-01', 6500, 1);
INSERT INTO emp VALUES (4, '赵六', '会计', '2021-04-01', 7000, 3);
SELECT ename, sal,
CASE
WHEN sal < 6000 THEN 'level1'
WHEN sal >= 6000 AND sal < 6500 THEN 'level2'
WHEN sal >= 6500 AND sal < 7000 THEN 'level3'
ELSE 'level4'
END AS level
FROM emp
ORDER BY sal ASC;
```
查询结果如下:
```
+-------+-------+--------+
| ename | sal | level |
+-------+-------+--------+
| 李四 | 6000.00 | level2 |
| 王五 | 6500.00 | level3 |
| 赵六 | 7000.00 | level4 |
| 张三 | 8000.00 | level4 |
+-------+-------+--------+
```
阅读全文