[英]MySQL - JOIN with relation table
我有三張桌子
USER
---------------------------------------
id | uid | first_name | last_name | ...
---------------------------------------
0 | 95 | ... | ... | ...
1 | 100 | ... | ... | ...
2 | 120 | ... | ... | ...
3 | 130 | ... | ... | ...
NEWS_mm
------------------------
uid_local | uid_foreign
------------------------
40 | 90
40 | 100
50 | 120
50 | 130
NEWS
-------------------------------
id | uid | title | image | ...
-------------------------------
0 | 40 | ... | ... | ...
1 | 50 | ... | ... | ...
2 | 60 | ... | ... | ...
現在我只想從表“USER”中選擇所有用戶,其中包含來自表“NEWS”的新聞ID 50。 NEWS_mm具有來自“NEWS”的新聞id(id_local)和來自“USER”的用戶id(id_foreign)
SELECT USER.*, NEWS_MM.*, NEWS.*
FROM USER
JOIN NEWS_MM
ON NEWS_MM.uid_foreign = USER.uid
JOIN NEWS
ON NEWS_MM.uid_local = NEWS_MM.uid_local
WHERE NEWS.uid = 50
你是在正確的行,但你加入NEWS_MM = NEWS_MM的新聞我懷疑你想加入如下:
SELECT USER.*, NEWS_MM.*, NEWS.*
FROM USER
JOIN NEWS_MM
ON NEWS_MM.uid_foreign = USER.uid
JOIN NEWS
ON NEWS_MM.uid_local = NEWS.uid
WHERE NEWS.uid = 50
另請注意,您知道NEWS_MM.uid_local的值與NEWS.uid相同,因此如果您只想要USER表中的數據,那么您根本不需要第二次連接,這樣可以提供更好的性能
SELECT
NEWS_MM.uid_local,
USER.*
FROM USER
JOIN NEWS_MM
ON NEWS_MM.uid_foreign = USER.uid
WHERE NEWS_MM.uid_local = 50
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.