我有一个最终的临时表(#tempTable),其中的列号未知。 我的最终选择就是这样,它有效:
SELECT temp.* FROM #tempTable temp
但我不想单独使用“ *”作为每个列:
SELECT temp.col1, temp.col2 FROM #tempTable temp
为此,我需要遍历列名并创建一个过程,我尝试过类似的事情:
DECLARE @ColName VARCHAR(255)
SELECT @ColName = min(name) FROM tempdb.sys.columns
WHERE object_id = Object_id('tempdb..#TEMPTABLE');
WHILE @ColName is not null
BEGIN
-- i need to do it all in once and not each time....
declare @sql varchar(max) = 'SELECT tp.'+'@COlName'+'FROM #TEMPTABLE tp'
exec(@sql)
-- Increment the value, how to go to next column ?
select @ColName = min(name) FROM tempdb.sys.columns WHERE object_id =
Object_id('tempdb..#TEMPTABLE') > @ColName -- does not work because it is a string (column name)
END
答案 0 :(得分:1)
尝试一下:
DECLARE @ColName VARCHAR(2000) = 'select '
SELECT @ColName = @ColName + ' temp.' + name + ',' FROM tempdb.sys.columns
WHERE object_id = Object_id('tempdb..#TEMPTABLE')
--delete last character, which is comma and append table name
@ColName = substring(@ColName, 1, LEN(@ColName) - 1) + ' from #TEMPTABLE temp'
exec(@ColName)
此查询构造在select ... from ...
语句中组合的整个表列表。我增加了varchar
变量的大小,因此它可以适应较长的查询。
此外,诸如@sql
或@query
之类的IMO变量名称将更有意义。
答案 1 :(得分:1)
基于集合的方法
$('.more, .wd').on('click', function(event) {
event.stopPropagation();
});