如何编写通过获取n-1列名称来选择查询

时间:2013-10-05 09:12:15

标签: c# asp.net sql sql-server-2008

在我的数据库表中,我有

 sr_no
 FID
 DOJMU
 DOJMCIS
 Designation
 UpdateDate

我必须编写一个select命令,以便我应该选择除sr_no之外的所有字段。我知道我们可以将其作为Select FID,DOJMU,DOJMCIS,Designation,UpdateDate from TableName。但对我来说,我需要查询{{1}但它应该排除一个列名称是否可能?

因为我需要在C#(带有c#的asp.net)中执行此查询,所以我有以下代码

select * from table name

@Start和@End之间的m.updateDate 您可以在此处看到select p.Name,m.* from Publication_det m INNER JOIN Personal_det p ON m.FID= p.FID 代表上述m.*,因此在执行select * from table name时也会显示,因此我需要使用sr_no列名称的解决方案。

3 个答案:

答案 0 :(得分:1)

使用select没有标准 SQL方法,要么你必须列出它们或者全部选择它们。在TSQL中,动态查询可能会为您提供所需的结果,但复杂性比常规选择要高很多。

如果它或多或少是一个静态查询,你可以为它创建一个视图;

CREATE VIEW test_view AS 
  SELECT FID,DOJMU,DOJMCIS,Designation,UpdateDate 
  FROM test;

然后定期;

SELECT * FROM test_view;

...将获得您想要的列。

答案 1 :(得分:0)

您可以使用动态SQL查询来执行此操作。

例如:

DECLARE @cols AS VARCHAR(MAX)
DECLARE @SQL AS VARCHAR(MAX)

SET @cols = STUFF
            (
                (
                    SELECT distinct ',' + QUOTENAME([name]) 
                    FROM   syscolumns 
                    WHERE  id = 
                           (
                               SELECT id 
                               FROM   sysobjects 
                               WHERE  type = 'V' 
                                      AND [Name] = 'TableName'
                           ) 
                           AND [name] not in ('sr_no')--you may define more names here
                    FOR XML PATH(''), TYPE
                 ).value('.', 'NVARCHAR(MAX)') 
                 ,1
                 ,1
                 ,''
            )

SET @SQL = 'SELECT ' + @cols + ' FROM TableName'

EXEC(@SQL)

答案 2 :(得分:0)

您有两种选择:

1)声明@tablename varchar(50)='submission_mst'

select 'Select '+
stuff
((
select ', '+ t.name
from  (
select name ,[object_id] from sys.columns where object_id in (select object_id from   sys.tables where name =@tablename)
and name <>'MGAName'
)t
for xml path ('')),1,1,'') + ' from'+ @tablename

2)

SELECT * INTO #TempTable  FROM tablename
ALTER TABLE #TempTable  DROP COLUMN columnname
SELECT * FROM #TempTable
DROP TABLE #TempTable