我有一个用户表和一个销售表。销售表有一个列 user_id 我希望加入到用户表的 id 列。我的预期结果是获取 sales 表中的所有行,其中 user_id 与 user 表中的 id 列匹配,因此我可以显示登录用户的信息。
我的查询是这样的:
SELECT * FROM user u JOIN sales s ON ( u.id = s.user_id )
但是会发生什么,结果我只是得到了表格的每一行。
任何帮助表示赞赏。谢谢。
我有一个用户表和一个销售表。销售表有一个列 user_id 我希望加入到用户表的 id 列。我的预期结果是获取 sales 表中的所有行,其中 user_id 与 user 表中的 id 列匹配,因此我可以显示登录用户的信息。
我的查询是这样的:
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'
在您当前的 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
根据您的需要。