如何使用连接返回一个表中的所有列,并在另一个表中返回几个?

问题描述:

我宁愿不必列出tableA中的所有列'*'适用于一个表,但我不想从JOIN中取回tableB中的所有列。原因是,这些记录正在被删除,并且我希望将tableA(only)中的数据存储为序列化xml一段时间。如何使用连接返回一个表中的所有列,并在另一个表中返回几个?

+2

可以说,最好的做法是按名称调出每列,而不是使用*。按名称调出列的优点可以包括降低带宽使用率,提高性能和控制维护成本(将列添加到基础表时)。 – kbrimington 2010-08-02 14:34:49

+0

如果您尝试在select tableName。*方法中使用group by语句,则您可能会遇到问题。除非你有一个非常宽的表,有很多变量,并且如果添加新变量(不太可能!),它永远不重要,你应该明确列出变量。 – 2017-05-25 21:00:24

select tableA.*, tableB.col1, tableB.col2, ... 
+1

@Martin她/他说他/他*不想*表中的所有列B – NullUserException 2010-08-02 14:31:47

+1

@Null - 绝对正确 - 我必须再喝一杯咖啡。 – 2010-08-02 14:33:41

+0

Downvoted鼓励使用SQL ANtipattern – HLGEM 2016-02-08 14:50:53

这是一个穷人的做法,曾经使用select *或select table1。*。这对维护和性能都是不利的。你不应该在生产代码中这样做。

只需使用所需的列名即可。

+1

这很好理解。知道新添加的列将自动包含在TableA中,这仍然很不错。 如果这不是查询要删除的记录,我肯定会编码查询所需的所有列名称。在这种情况下,我需要序列化所有数据以防止还原需要完成。谢谢, – 2010-08-02 19:01:50

+0

非常好点 – JBoy 2015-09-23 15:15:20

+0

是的,但显然这个人和我需要所有列 – 2016-02-06 09:15:21