2015-09-20 29 views
-2

我有一個表users這樣如何從數據庫條件得到那裏的東西存在另一個表中的數據或不

id | name |  password  |  email 
1  saeid   *****    [email protected] 

我有另一個表稱爲appointments

id | created_by |  due_date  |  notification_send 
1    1    *****     0 

我想獲取users表中的所有用戶至少在appointments表中創建了一個約會(在約會表中以created_by字段表示)。

我曾嘗試下面的代碼,但它失敗:

SELECT * FROM users LEFT JOIN appointments a ON persons.id = a.created_by 

但很明顯,這是行不通的。

回答

3

的一種方法是使用exists斷言:

SELECT * FROM users u 
WHERE EXISTS (SELECT 1 FROM appointments a WHERE a.created_by = u.id) 

或者,你可以使用一個inner join,但exists查詢對應在我看來,最好你的問題(也就是如果你只需要從users數據表)。

left join表示從users獲取所有行,而不管它們是否在appointments中有匹配的行,這不是您想要的。

1

您正在搜索的表之間的匹配,所以我建議做一個INNER JOIN而不是像下面

SELECT * FROM users u 
JOIN appointments a ON u.id = a.created_by 

還要檢查你的ON第一次,我認爲無論是這是一個錯字或一個很大的錯誤。您正在從users表中選擇爲什麼persons.id

ON persons.id = a.created_by 
相關問題