在 LEFT JOIN 上仅选择表中的某些列
Posted
技术标签:
【中文标题】在 LEFT JOIN 上仅选择表中的某些列【英文标题】:Select only some columns from a table on a LEFT JOIN 【发布时间】:2010-11-22 17:08:04 【问题描述】:是否可以?
【问题讨论】:
【参考方案1】:在您的选择语句中将*
添加到该表中,并用逗号与其他列分开:
SELECT table1.*, table2.col2, table2.col3
FROM table1
LEFT JOIN table2
ON...
来源:https://***.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 来自连接表,而不是原始源表。以上是关于在 LEFT JOIN 上仅选择表中的某些列的主要内容,如果未能解决你的问题,请参考以下文章
MYSQL - 仅当 LEFT JOIN 中的行不存在时才选择
Laravel 4 查询生成器:LEFT JOIN ... AND ... 查询
SQL 如何使用 LEFT JOIN 从表中选择单个值,在 Google Datastudio 中