我的emp表是这样的
+------+------------+
| emp | emp_status |
+------+------------+
| 001 | w |
| 002 | nw |
| 003 | w |
| 004 | w |
+------+------------+
和薪水表是
+------+------------+
| emp | month |
+------+------------+
| 001 | Dec2013 |
| 002 | Dec2013 |
| 003 | Dec2013 |
| 004 | Dec2013 |
| 001 | Jan2014 |
| 002 | Jan2014 |
| 003 | Jan2014 |
| 004 | Jan2014 |
| 001 | Feb2014 |
| 004 | Feb2014 |
+------+------------+
所以对于2014年2月这个月我想得到没有报酬的人
+------+------------+
| emp | emp_status |
+------+------------+
| 003 | w |
+------+------------+
我试过
SELECT * FROM emp WHERE NOT EXISTS (SELECT emp FROM salary where month_sal ='Feb2014')
我想使用emp_status(' w')以及......任何提示......
答案 0 :(得分:1)
您错过了将where
中的EXISTS
子句连接到外部查询,如下所示:
SELECT * FROM emp
WHERE NOT EXISTS
(
SELECT NULL
FROM salary
where salary.month_sal ='Feb2014'
AND salary.emp=emp.emp
)
AND emp.emp_status='w'
您开始撰写的内容看起来像IN
。你也可以这样做:
SELECT * FROM emp
WHERE NOT emp.emp IN
(
SELECT salary.emp
FROM salary
where salary.month_sal ='Feb2014'
)
AND emp.emp_status='w'
答案 1 :(得分:0)
以下内容应该有效:
SELECT *
FROM emp
WHERE emp_status = 'w'
AND emp NOT IN (SELECT emp FROM emp WHERE month_sal ='Feb2014')
如果字段名称与表名相同,看起来有些奇怪,但希望这是正确的。