【发布时间】:2011-12-28 10:03:04
【问题描述】:
我有 2 个表要 LEFT JOIN 并过滤 LEFT 表上的结果。 这些表是: -product_table,包含列 id 和 product_name -order_table,包含列 id、product_id、product_order
我尝试从 id 为 1 的产品表中选择一行,并在产品 id 与产品表中的 id 相同的订单表中左连接。
我的第一次尝试是这样的:
SELECT * FROM product_table
WHERE product_table.id = 1
LEFT JOIN order_table
ON order_table.product_id=product_table.id
对于这个查询,我遇到了语法错误。
所以我搜索了如何 LEFT JOIN 并从 LEFT 表中过滤结果,我发现在查询中使用了 LEFT JOIN 之后的 AND,如下所示:
SELECT * FROM product_table
LEFT JOIN order_table
ON order_table.product_id=product_table.id
AND product_table.id=1
但是这里的查询返回所有 product_table 行和所有对应的 order_table 行,全部连接,但我想要的只是 id 等于 1 的 product_table 行,并与相应的 order_table 行连接。 我该怎么做?
【问题讨论】:
-
您的查询看起来不错。能否展示产品和订单的小数据样本?
-
除非您正在编写数据库管理程序,否则不要使用
SELECT *;只选择您需要的列。 -
你的第一个查询是在join之后正确使用where子句。