【问题标题】:Query in multiple tables with MYSQL用MYSQL查询多张表
【发布时间】:2010-03-24 15:22:50
【问题描述】:

我有 2 张桌子。

Table_1 有产品 3 行:ID、数量和价格。 Table_2 有 2 行:ID、Special_note。

并非所有产品都有特殊说明。当产品没有特殊说明时,表 2 中没有该产品的行。

我正在尝试使用一个选择查询,该查询将从 table_1 中获取所有信息,但如果有的话,也会从 table_2 中获取特殊注释。

我现在遇到的问题是,如果没有特别说明的话,根本抓不到table_1的信息。

我明白它为什么这样做,但我不知道如何修复查询,以便它返回所有产品,无论是否有特殊说明。

 SELECT TABLE_1.ID, QUANTITY, PRICE, SPECIAL_NOTE
 FROM TABLE_1, TABLE_2
 WHERE TABLE_1.ID = TABLE_2.ID

出于本示例的目的,我稍微简化了查询。

感谢您的帮助!

【问题讨论】:

    标签: mysql


    【解决方案1】:

    使用LEFT OUTER JOIN

    SELECT t1.ID, t1.QUANTITY, t1.PRICE, t2.SPECIAL_NOTE
    FROM TABLE_1 t1
    LEFT OUTER JOIN TABLE_2 t2 ON t1.ID = t2.ID
    

    更新:

    要添加 WHERE 子句,例如,数量 >= 1,请执行以下操作:

    SELECT t1.ID, t1.QUANTITY, t1.PRICE, t2.SPECIAL_NOTE
    FROM TABLE_1 t1
    LEFT OUTER JOIN TABLE_2 t2 ON t1.ID = t2.ID
    WHERE t1.QUANTITY >= 1
    

    【讨论】:

    • 非常感谢。试图掌握这个新概念。假设我只想抓取数量至少为 1 的行。我将在哪里添加 where 查询?在 LEFT OUTER JOIN 行之后?
    • 我在一个简单的例子中就知道了!试图让它与我实际的非常长和复杂的查询一起工作。非常感谢!
    猜你喜欢
    • 2013-05-10
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多