从查询结果(SQL)中删除列

从查询结果(SQL)中删除列,sql,sql-server,Sql,Sql Server,我正在使用以下SQL查询: 查询 通过这个查询,我从我的表中检索了我所有列的10个数据行,并额外检索了一个带有行号的列。但是我不想要这个行号列,我只想要表本身的实际列。我在网上搜索了一下,但没有找到任何有用的东西。我自己也尝试过一些东西,但它们没有给我预期的结果 WITH selectRow AS ( SELECT *, row = ROW_NUMBER() OVER ( ORDER BY (SELECT 1) ) FROM myTable ) SE

我正在使用以下SQL查询:

查询 通过这个查询,我从我的表中检索了我所有列的10个数据行,并额外检索了一个带有行号的列。但是我不想要这个行号列,我只想要表本身的实际列。我在网上搜索了一下,但没有找到任何有用的东西。我自己也尝试过一些东西,但它们没有给我预期的结果

WITH selectRow AS
(
    SELECT *, row = ROW_NUMBER() OVER 
    (
        ORDER BY (SELECT 1)
    ) FROM myTable
 )
 SELECT Column_names FROM selectRow 
 WHERE row BETWEEN 1 AND 10;

注意:使用column\u names=所需的列名。

我发现这里没有必要使用ROW\u NUMBER函数,因为您使用的是over select 1,这没有任何意义。 相反,您可以使用下面的方法,只需使用TOP n

select top 10 * from myTable
如果您需要范围:


那么我看到的方法是不在:

select top 10 * from myTable 
where id not in (select top 20 id from mytable)
如果您有sql server 2012,则可以使用偏移量

     select * from myTable
     order by id
     offset 10 rows
     fetch next 20 rows only

只需将所需列的名称改为*在第二个选择中列出所需字段,而不是*只提及MyTable的字段。问题是每次从我的c应用程序执行查询时,这些名称都是不同的。我可以先通过一个单独的查询获得列名,然后将列名字符串放入这个查询中。然而,这将需要两个独立的查询。我想知道我是否可以将这两个问题结合起来。已尝试使用另一个select语句从信息_SCHEMA.COLUMNS中选择列_name,其中myTable位于“*”的位置。但是,不允许将select语句放在select语句中,至少不是通过我这样做的方式。@WonderTiger:为什么不首先对这些信息本身提出质疑??没人知道你想做什么!!!我想这太具体了。他说他想检索10个数据行,这可能意味着他想在下一页获取第11到20行。这对排名前十的人不起作用奥利弗说的是对的。它将根据用户的选择进行更改。您使用的SQL Server版本是什么?我们主要运行2005和2008版。然后我看到的方法是使用NOT IN:从myTable中选择top 10*,其中id不在其中从myTable中选择top 10 id如果您有SQL Server 2012,您可以使用offset
     select * from myTable
     order by id
     offset 10 rows
     fetch next 20 rows only