在下面的查询中,我不想获取临时列(RowNum)详细信息。
SELECT *
FROM (SELECT Row_number()
OVER (
ORDER BY column_name) AS RowNum,
*
FROM table_name) Temp
WHERE ( rownum%2 ) = 0
帮我查询..
答案 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