关于SQL的select语句的一个问题,会的高手进来帮帮忙。。

2024-12-29 04:26:19
推荐回答(6个)
回答1:

declare @str as varchar(8000)
set @str=''
select @str=@str+','+name
from syscolumns
where id=object_id(N'表名')
and name<>'要排除的字段名'
order by colid

print @str --本行可以删除
--去除第一个逗号(,)
set @str=substring(@str,2,len(@str))
print @str --本行可以删除

--查询
exec('select '+@str+' from 表名')

--如果是ACCESS数据库,可以这样
//测试环境:VS2005,C#2.0,ACCESS2003
1、
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\\Backup\\我的文档\\db1.mdb';";
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = strConn;
conn.Open();

OleDbDataAdapter oda = new OleDbDataAdapter();
oda.SelectCommand = new OleDbCommand("select * from ExamMulti", conn);
DataTable dt = new DataTable();
oda.Fill(dt);
DataSet ds = null;

oda.Dispose();
conn.Close();

dt.Columns.Remove("bh"); //去除不需要的列
dataGridView1.DataSource = dt;
dataGridView1.Refresh();

或者2、
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\\Backup\\我的文档\\db1.mdb';";
conn.Open();

OleDbDataReader odr = new OleDbCommand("select * from tabName", conn).ExecuteReader(); //读取表的架构信息

DataTable dt = odr.GetSchemaTable();
odr.Close();
gridTb.DataSource = dt;
gridTb.Refresh();
conn.Close();

循环取出表的字段名,排除不需要的字段,然后再进行查询。
推荐使用第一种方法。

回答2:

就是想省事啊,简单:
在查询分析器中,右击表名,“在新窗口中编写对象脚本”,“选择”,然后,在生成的全部列名的查询中去掉不想要的列即可。
=========================================
你需要新建一个查询,去掉那个字段,然后数据集打开查询不就行了

回答3:

按标准SQL,你提出的这种要求不可能有一个简便的方法来实现,如果你想达到目标,必须把除了a之外所有列名都给出,即使是成百上千个。

回答4:

select name from dbo.syscolumns where id = object_id(N'[dbo].[kk]') and name<>'a'
上面语句得到除a列外的一个列表,把它形成一个字符串代替你的?就OK了

回答5:

做人不要太懒了!!

回答6:

select * from ……
a列不用不就得了?