Mysql - 获取记录符合where子句中的条件

时间:2015-06-03 12:21:06

标签: mysql

请大家帮我写这个案例的查询。感谢。

表格数据

id  emp date  n1  n2  check 
-----------------------------
1   1   Mon   2   1   1     
2   1   Sun   1   0   0   
3   1   Sat   1   0   0
4   1   Fri   1   0   0
5   2   Mon   2   1   0
6   2   Sun   1   0   0  
7   2   Sat   1   0   0
8   2   Fri   1   0   0

要求: 获取dateMonn2为1且check为1的记录。如果有记录,则还显示具有date的同一员工的记录。 (SunSat)和n1为1。

然后输出应该是:

id  emp date  n1  n2  check 
-----------------------------
1   1   Mon   2   1   1     
2   1   Sun   1   0   0   
3   1   Sat   1   0   0

2 个答案:

答案 0 :(得分:1)

您可能需要使用嵌套查询。在获取各行之前获取员工的ID列表。

SELECT * FROM `tablename`
WHERE `emp` IN (
    SELECT `emp` FROM `tablename`
    WHERE `date` = "Mon" AND `n2` = 1 AND `check` = 1 GROUP BY emp
) AND (
    (`date` = "Mon") OR 
    (`date` IN ("Sat", "Sun") AND `n1` = 1)
)

或者,您可以单独运行两个查询,以简化有关Mon/Sat/Sunn1部分的逻辑,并自行合并两个结果数组。

答案 1 :(得分:0)

您正在寻找的是在同一张桌子上的完全外部加入。

SELECT * FROM Table FULL OUTER Join Table WHERE Table.date = 'Mon' Or Table.n1 = 1;