簡體   English   中英

mysql查詢僅從我的數據庫返回一個結果

[英]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.

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