这可能是一个愚蠢的问题,但是如果我选择tableA。* ,但在结果中我想要一个来自tableB的列,比如在tableA' s中间插入的第三列如果没有手动从tableA中选择每一列并根据需要重新排列,有没有办法做到这一点?这是在SSMS2016中。
答案 0 :(得分:0)
没有办法做到这一点。
如果您不知道,可以在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)')
希望此查询可以帮助您:)