我有一個用戶表和一個銷售表。銷售表中有一列user_id,我希望加入到用戶表的id列中。我的預期結果是獲取銷售表中的所有行,其user_id與用戶表中的id列匹配,因此我可以顯示登錄用戶的信息。mysql連接返回整個表而不是結果
我的查詢是這樣的:
SELECT * FROM user u JOIN sales s ON (u.id = s.user_id)
會發生什麼事,雖然是我剛剛得到的表的每一行的結果。
任何幫助表示讚賞。謝謝。
我有一個用戶表和一個銷售表。銷售表中有一列user_id,我希望加入到用戶表的id列中。我的預期結果是獲取銷售表中的所有行,其user_id與用戶表中的id列匹配,因此我可以顯示登錄用戶的信息。mysql連接返回整個表而不是結果
我的查詢是這樣的:
SELECT * FROM user u JOIN sales s ON (u.id = s.user_id)
會發生什麼事,雖然是我剛剛得到的表的每一行的結果。
任何幫助表示讚賞。謝謝。
您必須添加WHERE
條款,篩選出當前用戶的行,像
SELECT * FROM user u JOIN sales s ON (u.id = s.user_id)
WHERE u.User = 'someone'
爲此歡呼。 – devon93 2013-05-01 12:13:56
在當前的SQL要加入的表,但你的使用情況更像是左外連接。 使用此查詢
SELECT column_name(s)
FROM sales s
LEFT JOIN user u
ON u.user_id=s.user_id
您嘗試正在結果的笛卡兒積查詢。所以它顯示了表中的所有行。
您應該嘗試Inner Join
,Left Outer Join
或Right Outer Join
而不是根據您的需要。
笛卡爾怎麼樣?沒有限定符的'JOIN'和'INNER JOIN'是一樣的。 – 2013-05-01 11:33:21
您沒有在查詢中的任何位置使用登錄用戶的ID,因此數據庫將爲所有用戶返回數據。通常,您希望在末尾添加'WHERE u.id = @ mycurrentuserid',其中'@ mycurrentuserid'是登錄用戶的ID。 – 2013-05-01 08:33:30