0

在我的数据库表中,我有

 sr_no
 FID
 DOJMU
 DOJMCIS
 Designation
 UpdateDate

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

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

select p.Name,m.* from Publication_det m INNER JOIN Personal_det p  ON m.FID= p.FID 

@Start 和 @End 之间的 m.updateDate 在这里您可以看到它m.*代表上述内容select * from table name,因此在执行sr_no时也会显示,因此我需要使用 n-1列名的解决方案。

4

3 回答 3

1

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

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

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

然后是常规;

SELECT * FROM test_view;

...会得到你想要的列。

于 2013-10-05T09:17:47.610 回答
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)
于 2013-10-05T09:14:00.970 回答
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
于 2013-10-05T09:47:53.993 回答