0

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

我的查询是这样的:

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

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

任何帮助表示赞赏。谢谢。

4

3 回答 3

1

您必须添加WHERE过滤掉当前用户行的子句,例如

SELECT * FROM user u JOIN sales s ON ( u.id = s.user_id )
WHERE u.User = 'someone'
于 2013-05-01T08:35:23.280 回答
0

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

SELECT column_name(s)
FROM sales s
LEFT JOIN user u
ON u.user_id=s.user_id
于 2013-05-01T08:36:18.093 回答
0

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

您应该尝试Inner JoinLeft Outer Join或者Right Outer Join根据您的需要。

于 2013-05-01T08:41:53.490 回答