从JOIN语句中选择适当的列

时间:2010-04-05 08:28:58

标签: sql sql-server tsql

我有两个表:table1,table2。 Table1有10列,table2有2列。

SELECT * FROM table1 AS T1 INNER JOIN table2 AS T2 ON T1.ID = T2.ID

我想从table1中选择所有列,而从table2中只选择1列。是否可以在不枚举 table1

的所有列的情况下执行此操作

3 个答案:

答案 0 :(得分:14)

是的,您可以执行以下操作:

SELECT t1.*, t2.my_col FROM table1 AS T1 INNER JOIN table2 AS T2 ON T1.ID = T2.ID

答案 1 :(得分:6)

即使您可以执行t1.*, t2.col1事情,我也不会在生产代码中推荐它。

永远不会在制作中使用SELECT * - 为什么?

  • 你告诉SQL Server获取所有列 - 你真的,真的需要所有列吗?
  • 通过不指定列名,SQL Server必须自己解决这个问题 - 它必须查阅数据字典以找出哪些列存在,这会花费一点点性能
  • 最重要的是:你不知道你得到了什么。突然,表格发生了变化,又增加了一两列。如果您有任何依赖于例如表中的序列或列数没有明确检查,您的代码可以制动

我对生产代码的建议:总是(没有例外!)准确指定您真正需要的那些列 - 即使您需要所有这些列,也要明确拼写出来。如果基础表中发生任何变化,那么就会减少意外,减少寻找的错误。

答案 2 :(得分:-2)

使用table1.*代替table1的所有列;)