簡體   English   中英

我怎樣才能獲得必須與 SQL IN 匹配的最小給定 ID 的記錄?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM