如何在mysql中按值检查每个组的条件

时间:2014-07-02 09:23:27

标签: mysql sql

这里我的表格如下:

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
注意:
我需要单一查询。
请帮助我。

1 个答案:

答案 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的类型,因为它们是整数但有字符串值)。