[英]mysql query returns only one results from my database
我的數據庫中有2個表。 表用戶和表概要文件。
users(user_id, surname, email)
profile(profile_id, country, user_id)
表概要文件中的user_id是FK(來自users表)。 為了從數據庫“ USA”中選擇所有姓“ smith”的人,我有以下查詢。 這是我的查詢:
SELECT u.name,
u.surname,
u.email,
u.user_id,
p.user_id
FROM users u
INNER JOIN profile p ON p.country = 'USA'
WHERE u.surname = 'smith' AND u.user_id = p.user_id
此查詢工作正常,但問題是只返回1個結果,而不是我數據庫中的所有結果(來自美國的史密斯姓氏的人)。 任何想法哪里可能是錯誤的,以及如何糾正它?
您應該將u.user_id = p.user_id
條件設置為ON condition
因為您想在'user_id'字段上應用JOIN。 並且where clause
應具有其余條件。
SELECT u.name,
u.surname,
u.email,
u.user_id,
p.user_id
FROM users u
INNER JOIN profile p ON u.user_id = p.user_id
WHERE u.surname = 'smith' And p.country = 'USA'
您可以了解有關INNER JOINS的信息
僅在與join on
條件下使用聯接中的列。 將2個表鏈接在一起的列。 並將其余的放在where
子句中。 那應該工作:
SELECT u.name,
u.surname,
u.email,
u.user_id,
p.user_id
FROM users u
INNER JOIN profile p ON u.user_id = p.user_id
WHERE p.country = 'USA'
AND u.surname = 'smith'
這對於可讀性也更好。 您可以這樣閱讀:
從表用戶中選擇這些列。 在這2列上也加入表配置文件。 之后,過濾數據並僅返回滿足這些條件的記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.