我有一张表,可以将工作日分配给worker-ID。
Table: workdays Table: jobs
+------+-------+ +------+-----------+
| id | days | | id | jobs |
+------+-------+ +------+-----------+
| 1 | mon | | 1 | cleaning |
| 1 | tue | | 2 | cooking |
| 2 | sat | | 3 | driving |
| 3 | mon | | 4 | cleaning |
| 3 | tue | | 5 | cooking |
| 3 | sat | +------+-----------+
| 4 | wed |
| 4 | mon |
| 5 | tue |
+------+-------+
这是我用来选择在我指定的任何日子(例如星期一和星期二)工作的人的ID的查询:
SELECT * FROM workdays WHERE days IN ( 'mon', 'tue' )
现在我想选择那些在我指定的所有日子里工作的人。我怎么能这样做?
编辑:添加第二个表格。
答案 0 :(得分:4)
假设days
对于每个id
都是唯一的。
SELECT id
FROM workdays
WHERE days IN ('mon', 'tue')
GROUP BY id
HAVING COUNT(*) = 2
否则,您需要在DISTINCT
子句中使用HAVING
来仅计算唯一值。
HAVING COUNT(DISTINCT days) = 2