2017-07-04 119 views
0

第一台员工查询SQL连接和WHERE子句

id empName  empEmail   empSal active 
==================================================== 
13 sadf  [email protected]  233  1 
12 checkout [email protected] 3   1 
11 safg  [email protected]  123  1 
10 sdf   [email protected]   4   1 
9 sdaf  [email protected]  3   1 
8 asdf  [email protected]  8   1 
7 asdf  [email protected]  8   1 
6 asdf  [email protected]  8   1 

二表一致,如Emp_status

id emp_id EmpSalary active 
============================= 
5 4  156  1 
4 2  156  1 
3 2  555  1 
2 1  200  0 
1 1  1500  1 



SELECT o.* 
FROM employees as o 
LEFT JOIN emp_status as emp ON emp.emp_id = o.id 
WHERE (emp.active IS NULL OR (emp.active != 0)) 
GROUP BY o.id 
ORDER BY o.id DESC 

如果一致,如Emp_status有两行一个有状态1和其他具有状态0,我们想要什么,应该不能算如果我有零,它应该帮助执行。这怎么可能?

+0

你可以阐述多个表的条件我不明白吗?你想跳过那些有0状态的员工? –

+0

请张贴预期结果。 – maSTAShuFu

+0

如果要计数,请添加'SELECT count(o.id)AS cnt' –

回答

2

不要通过参加在where子句中,我建议你积极的列数据类型= ENUM和设定值0,1,2,3,4,5,6

SELECT o.* FROM employees as o 
LEFT JOIN emp_status as emp ON emp.emp_id = o.id and emp.active IN (1,2,3,5,6) GROUP BY o.id ORDER BY o.id DESC 
+0

查看第二个表emp_status emp_id具有活动值0它不应该显示,但仍显示 –

+0

要获取emp.active = NULL? –

+0

不起作用请检查 –