mysql join返回整个表而不是结果

时间:2013-05-01 08:29:46

标签: mysql

我有一个用户表和一个销售表。 sales表有一个user_id列,我想加入user表的id列。我的预期结果是获取sales表中的所有行,其user_id与user表中的id列匹配,因此我可以显示登录用户的信息。

我的疑问是:

SELECT * FROM user u JOIN sales s ON ( u.id = s.user_id )

虽然我只是得到了表格的每一行,但会发生什么。

感谢任何帮助。感谢。

3 个答案:

答案 0 :(得分:1)

你必须添加WHERE子句来过滤掉当前用户的行,比如

SELECT * FROM user u JOIN sales s ON ( u.id = s.user_id )
WHERE u.User = 'someone'

答案 1 :(得分:0)

在当前的SQL中,您正在加入表,但您的用例更像是左外连接。 使用此查询

SELECT column_name(s)
FROM sales s
LEFT JOIN user u
ON u.user_id=s.user_id

答案 2 :(得分:0)

您正在尝试的查询是制作结果的笛卡尔积。所以它显示了表中的所有行。

您应该根据需要尝试Inner JoinLeft Outer JoinRight Outer Join