如何选择表中除少数列之外的所有列数据 - SQL Server 2012

时间:2014-12-17 11:42:33

标签: sql-server

在下面的查询中,我不想获取临时列(RowNum)详细信息。

SELECT * 
FROM   (SELECT Row_number() 
                 OVER ( 
                   ORDER BY column_name) AS RowNum, 
               * 
        FROM   table_name) Temp 
WHERE  ( rownum%2 ) = 0 

帮我查询..

2 个答案:

答案 0 :(得分:2)

如果有一个实际的语法可以做得很方便,但有另一种方法可以做到这一点,它涉及一个TEMP表,解决方案看起来像 -

// Copy all (*) into temp table
SELECT * INTO TEMP_TABLE
FROM TARGET_TABLE

// Drop columns to be excluded
ALTER TABLE TEMP_TABLE
DROP C1,C2,C3 TARGET_TABLE

// Retrieve your intended data 
SELECT * FROM TEMP_TABLE

效率低下但如果你有大量的列而且很少有消除,可能会证明是有用的。

答案 1 :(得分:1)

然后不要使用*,但明确指定所有列,这是最佳做法:

SELECT Col1, Col2, Col3, ColXYZ ... 
FROM   (SELECT Row_number() 
                 OVER ( 
                   ORDER BY column_name) AS RowNum, 
               * 
        FROM   table_name) Temp 
WHERE  ( rownum%2 ) = 0 

Bad habits to kick : using SELECT * / omitting the column list