【问题标题】:Select only some columns from a table on a LEFT JOIN在 LEFT JOIN 上仅选择表中的某些列
【发布时间】:2010-11-22 17:08:04
【问题描述】:

是否可以在 LEFT JOIN 上仅选择表中的某些列?

【问题讨论】:

    标签: mysql join


    【解决方案1】:

    在您的选择语句中将* 添加到该表中,并用逗号与其他列分开:

    SELECT table1.*, table2.col2, table2.col3
    FROM table1
    LEFT JOIN table2
    ON...
    

    来源:https://stackoverflow.com/a/3492919/3417198

    【讨论】:

    • 终于找到了我想要的答案。当然,可以在每个嵌套选择中指定每一列,但通常需要级联 5 个或更多子查询才能将不同的列附加到主临时表,并且重写和跟踪所有列非常痛苦每个子查询。这样就解决了
    【解决方案2】:

    如果你想要一些 table1 的列和一些 table2 的列,你可以这样做

    SELECT t1.col1, t1.col2, t1.col3, t2.col1, t2.col2, t2.col3
    FROM table1 t1
    LEFT JOIN table2 t2
    ON...
    

    【讨论】:

      【解决方案3】:

      当然。只需像在任何查询中一样列出您要选择的列:

      SELECT table1.column1, table1.column2, table2.column3
      FROM table1
      LEFT JOIN table2 ON (...)
      

      请注意,我在所有列中都添加了 table1.table2. 前缀,以确保两个表中存在同名字段时不会出现任何歧义。

      【讨论】:

      • 可能值得补充的是,用它们来自的表作为前缀是个好主意,例如table1.column1、table2.column2 等等,所以停止歧义错误,只是为了一般的可读性。
      • 另外,如果您有任何不明确的列名,您可以使用点语法指定使用哪个表:SELECT table1.id, table2.name FROM table1 LEFT JOIN table2 ON (...)跨度>
      • 我想从我要加入的表中选择列,而不是从第一个表中。
      • @Psyche:没有什么不同。正如 Vorey 所描述的,table2.column3 来自连接表,而不是原始源表。
      猜你喜欢
      • 2019-04-18
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 2012-08-08
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2020-11-11
      相关资源
      最近更新 更多