这里我的表格如下:
CREATE TABLE my_table(id INT,emp_id INT,dept_id INT,salary INT,isapproved INT,isvalid INT);
插入my_table
价值观
(1,e1,d1,100,1,1),
(2,e1,d2,200,0,1),
(3,e1,d1,300,0,0),
(4,e2,d1,400,1,0),
(5,e3,d2,500,1,1),
(6,e3,d1,600,1,1),
(7,e3,d1,700,1,1),
(8,e4,d3,800,1,1);
我想要的是什么
首先,我需要通过emp_id检查查询组,我得到 e1,e2,e3,e4
然后检查每个emp_id条件 isapproved = 1并且isvalid = 1
最后我想要这个答案
emp_id
e3
e4 >
注意:
我需要单一查询。
请帮助我。
答案 0 :(得分:0)
您可以自行加入表格,然后排除任何未经批准或无效的匹配记录。
SELECT mt.emp_id
FROM my_table mt
LEFT JOIN my_table mtx ON (mtx.emp_id = mt.emp_id AND (mtx.isapproved = 0 OR mtx.isvalid = 0))
WHERE mt.isapproved = 1 AND mt.isvalid = 1 AND mtx.id IS NULL
GROUP BY mt.emp_id
SQL Fiddle(注意我更改了emp_id和dept_id的类型,因为它们是整数但有字符串值)。