簡體   English   中英

MySQL LEFT JOIN僅返回一行,並且在右表上具有where條件

[英]MySQL LEFT JOIN is returning just one row with a where condition on the right table

我有兩個表,一個表帶有事件,第二個表帶有標記為用戶保存的事件。

我需要獲取所有事件,並讓某個用戶知道是否保存了事件。

為此,我正在使用此SQL

SELECT event.id, saved.user_id
FROM event
LEFT JOIN saved on event.id = saved.event_id

但是隨后我得到了重復的事件,因為在保存的表中一個事件可能被許多用戶標記為已保存。

因此,我添加了where條件作為

SELECT event.id, saved.user_id
FROM event
LEFT JOIN saved on event.id = saved.event_id
where saved.user_id = "71"

但是令人驚訝的是,當我期望成千上萬的結果時,獲得的結果減少到只有一行,其中大多數將save.user_id設置為null,而使用save.user_id = 71則只有很少或只有一次

理想情況下,我希望某個用戶的saved.user_id列為true / false,例如:71

怎么了

更改:

LEFT JOIN saved on event.id = saved.event_id
where saved.user_id = "71"

至:

LEFT JOIN saved on event.id = saved.event_id
                   and saved.user_id = "71"

要么:

LEFT JOIN saved on event.id = saved.event_id
WHERE saved.user_id = "71" OR saved.user_id IS NULL

where子句過濾所有表中的數據, on子句僅過濾右側表中的行。

暫無
暫無

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

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