由于A表和B表的字段较多,在连接两个表进行查询时,如果显式列出所有字段,工作量会很大,代码也会很长。如何在不明确列出所有字段的情况下选择所有列?
例如我有两个表A和B,它们有一个公共字段id。通常情况下,如果我想选择A表和B表中的所有字段,SQL代码是这样写的:
select a., b.x1, b.x2, b.x3...... from a left join b using (id)
。如果A表和B表都有上百个字段,代码会很长。如何使用类似select a., b.* from a left join b using (id)
的查询选择表A和B中的所有字段并合并相同的字段?
JOIN...USING()
语法合并为连接命名的列。
除此之外,SQL 中没有通配符语法来合并相同的列。如果列具有相同的名称,SQL 不会假定它们是相同的。
例如,您可以在两个表中都有一个列
created_at
,但它们具有不同的值。仅仅因为它们具有相同的名称并不意味着它们具有相同的内容。
您只需列出所需的列即可。
看起来真正的问题是表有数百列。这是一种代码味道——通常它表明设计不好。