请大家帮我写这个案例的查询。感谢。
表格数据
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
要求:
获取date
为Mon
且n2
为1且check
为1的记录。如果有记录,则还显示具有date
的同一员工的记录。 (Sun
或Sat
)和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
答案 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/Sun
和n1
部分的逻辑,并自行合并两个结果数组。
答案 1 :(得分:0)
您正在寻找的是在同一张桌子上的完全外部加入。
SELECT * FROM Table FULL OUTER Join Table WHERE Table.date = 'Mon' Or Table.n1 = 1;