簡體   English   中英

從另一張表的一列中的多個值中選擇唯一的ID

[英]Select unique ids from multi values on one column in another table

我在一個問題上停留了幾個小時,這個問題可能很容易解決,但我迷失了……

我有3張桌子:

用戶

id    name
----------
1     jack
2     john
...

汽車

id    name
----------
1     ford
2     fiat
3     alfa
4     lada
...

user_car

id_user    id_car
-----------------
1          2
1          4
2          1
2          2
2          3

例如,我想讓所有用戶在user_car表中擁有ID為1和2的汽車,因此我應該只獲得id_user 2,而我找不到正確的方法。

試試這個未經測試的查詢:

select * from user join user_car car1 on id =car1.user_id
join user_car car2 on id =car2.user_id  where car1.id_car=1 and car2.id_car=2

我將在此問題上使用UNION:

SELECT id as id_user from user where id in(1, 2)
UNION
SELECT id as id_car from car where id in (1, 2)

也許你想要這個

SELECT *
FROM USER
WHERE id IN
    (SELECT id_user
     FROM user_car
     WHERE id_car=1 OR id_car=2);

您可以使用COUNT來做到這一點:

SELECT user.name
FROM user
INNER JOIN user_car ON user.id = user_car.id_user
INNER JOIN car ON user_car.id_car = car.id
WHERE car.id IN (1,2)
GROUP BY user.name
HAVING COUNT(DISTINCT car.id) = 2 

請注意,當您僅使用汽車ID時,可以簡化此操作以消除對汽車桌子的需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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