从结果中排除特定的列在SQL Server
问题描述:
可能重复:
SQL exclude a column using SELECT * [except columnA] FROM tableA?从结果中排除特定的列在SQL Server
我有以下查询,我想从结果中不包括列RowNum
,我该怎么办呢?
SELECT *
FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY [Report].[dbo].[Reflow].ReflowID) AS RowNum, *
FROM
[Report].[dbo].[Reflow]
WHERE
[Report].[dbo].[Reflow].ReflowProcessID = 2) AS RowConstrainedResult
WHERE
RowNum >= 100 AND RowNum < 120
ORDER BY
RowNum
谢谢。
答
在查询中不指定列名被认为是不好的做法。
您可以将数据推送到#temp表中,然后更改该#temp中的列以删除COLUMN,然后SELECT * FROM #temp。
这将是无效的,但它会得到你所要求的结果。但是,默认情况下,最好进入指定所需的所有列的方式。如果有人ALTER你的初始表,即使使用上面的push #temp方法,你也会得到不同的列。
答
不要使用*,但给你感兴趣的领域。这很简单。因为订单没有定义,所以使用“*”很不妥当。
答
由于您要根据RowNum的值排序结果,因此不能从结果中排除此列。您可以将查询结果保存在临时表中,然后在临时表上进行另一个查询,并提供要显示在结果中的列(而不是select *)。这种方法将显示除RowNum以外的所有列,这些列是根据RowNum的值排序的。
答
这应该工作,我不知道你的列的名称,所以使用通用名称。尽量不要使用*其认为不好的做法,使人们很难阅读你的代码。
SELECT [column1],
[column2],
[etcetc]
FROM ( SELECT ROW_NUMBER() OVER(ORDER BY RowConstrainedResult.RowNum) [RN],
*
FROM (SELECT ROW_NUMBER() OVER (ORDER BY [Report].[dbo].[Reflow].ReflowID) AS RowNum, *
FROM [Report].[dbo].[Reflow]
WHERE [Report].[dbo].[Reflow].ReflowProcessID = 2
) AS RowConstrainedResult
WHERE RowNum >= 100
AND RowNum < 120