[英]How can i get record with must match minimum given ids with SQL IN?
我有桌子:
用戶:
id | name
1 | first name
2 | second name
3 | third name
4 | fourth name
項目:
id | name
1 | first
2 | second
項目受邀者:
id | userId | projectId
1 | 1 | 1
2 | 2 | 1
3 | 2 | 2
4 | 3 | 1
我想要這樣的記錄:該項目必須具有最小的受讓人用戶 ID 為 1 和用戶 ID 為 2
我試過了:
select projectId from projectInvitees where userId IN (1, 2);
但它返回 projectId 1 和 2,因為我用戶 IN 但正如我提到的,我想要唯一的 projectId 1
誰能指導我這個
此變體可能會對您有所幫助。 對於需要更改的用戶,只需更改HAVING
語句中的參數即可。
SELECT projectid
FROM projectinvitees
WHERE userId IN (1, 2)
GROUP BY projectid
HAVING count (*) >= 2
你可以使用這樣的查詢:
SELECT distinct projectId
FROM projectInvitees
WHERE userId IN (1, 2)
GROUP BY projectId
HAVING count(*) = 2;
樣本
MariaDB [Kazoku]> SELECT * from projectInvitees;
+----+--------+-----------+
| id | userId | projectId |
+----+--------+-----------+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 2 | 2 |
| 4 | 3 | 1 |
+----+--------+-----------+
4 rows in set (0.02 sec)
MariaDB [Kazoku]> select distinct projectId
-> from projectInvitees
-> WHERE userId IN (1, 2)
-> GROUP BY projectId
-> HAVING count(*) = 2;
+-----------+
| projectId |
+-----------+
| 1 |
+-----------+
1 row in set (0.00 sec)
MariaDB [Kazoku]>
這是你需要的嗎?
SELECT
min(projectid) projectid
FROM
projectinvitees
WHERE
userid IN (
1,
2
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.