[英]Many-to-Many Select
我有3張桌子:
用戶 :
id name
1 Jack
2 Vasya
3 John
4 Robert
5 Dmitry
6 Dylan
城市 :
id city
1 London
2 Kyiv
3 New-York
4 Chicago
5 Moscow
6 Dubai
users_cities :
user_id city_id
1 1
3 1
5 6
2 3
4 5
6 6
我需要使用JOIN通過Jack的id(users.id = 1)選擇倫敦的Jack用戶或在Dmitry(users.id = 5)迪拜的用戶。 我該怎么辦?
我試過的
SELECT `u`.`username`, `uc`.`city_id` FROM `users` as `u`
INNER JOIN `users_cities` as `uc` ON `u`.`id` = `uc`.`user_id`
INNER JOIN `users_cities` as `uc1` ON `uc1`.`city_id` = `uc`.`city_id`
WHERE `u`.`id` = 1
它返回:
username city_id
Jack 1
Jack 1
你好親近 您只需要將JOIN
到user_cities
一次即可。 然后使用WHERE
子句確定要過濾的用戶或城市。
如果要在結果集中輸入城市名稱,則可以將user_cities
到cities
。
當您在同一個結果集( user_cities
)上加入兩次時,您實際上在查詢該結果兩次,這就是為什么您得到重復的“夾克”的原因。
如果這不是您所需要的,請調整WHERE
子句,以確定您希望如何過濾結果集。
SELECT
u.username,
c.city
FROM
users as u
INNER JOIN users_cities as uc ON u.id = uc.user_id
INNER JOIN cities as c ON uc.city_id = c.id
WHERE
u.id = 1 -- Jack
OR u.id = 5 -- Dimitry
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.