0

我有一个将工作日分配给工人 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' )

现在我想选择那些在我指定的所有日子里工作的人。我怎样才能做到这一点?

编辑:添加了第二个表。

4

1 回答 1

4

假设days对于每个id.

SELECT id
FROM workdays 
WHERE days IN ('mon', 'tue')
GROUP BY id
HAVING COUNT(*) = 2

否则,您需要DISTINCTinHAVING子句仅计算唯一值。

HAVING COUNT(DISTINCT days) = 2
于 2013-11-01T17:14:43.367 回答