在我的数据库表中,我有
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
列名称的解决方案。
答案 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