SQL - 选择*,但在另一列中添加第n列?

时间:2017-11-14 16:55:19

标签: sql sql-server

这可能是一个愚蠢的问题,但是如果我选择tableA。* ,但在结果中我想要一个来自tableB的列,比如在tableA' s中间插入的第三列如果没有手动从tableA中选择每一列并根据需要重新排列,有没有办法做到这一点?这是在SSMS2016中。

3 个答案:

答案 0 :(得分:0)

没有办法做到这一点。

如果您不知道,可以在SSMS中拖放表名和列名。这个功能经常派上用场。

详情请见: http://www.sqlservercentral.com/blogs/the-dba-who-came-in-from-the-cold/2016/11/09/drag-drop-table-column-names-in-ssms/

答案 1 :(得分:0)

第1步 - 将其输入ssms。

select count(*) 
from tableA a join tableB b on a.someField = b.someField

第2步 - 开始编辑您的select子句。 SSMS中的智能感知(又称自动完成)将减少您实际需要输入的字符数。

如果按照希望显示的顺序键入列,则不必在事后重新排列。

答案 2 :(得分:0)

您可以使用以下查询

-- store column list of table1 in @cols1 with ',' delimited using sys tables.

declare @cols1 varchar(max) =  stuff((SELECT ',' + sys.columns.name FROM sys.columns
                        JOIN sys.tables ON sys.columns.object_id = sys.tables.object_id
                        WHERE sys.tables.name ='table1'
                for xml path('')),1,1,'') 

-- find second occurance of ',' and replace it with ',columnNameFromTable2'
declare @pos int =  (SELECT CHARINDEX(',',LTRIM(RTRIM(@cols1)), (CHARINDEX(',', LTRIM(RTRIM(@cols1)) )+1)) secondpos)
declare @finalCols varchar(max) = stuff(@cols1,@pos,1,',columnNamefromTable2') 

-- execute dynamic query to get expected result
exec('select '+@finalCols+' from table1 t join table2 t2 on (condition)')

希望此查询可以帮助您:)