如何查询一个表中除某几个字段外其他所有的字段

话说楼主刚开始也不知道怎么查,然后就开始百度了

大部分网友都是建议一个一个写 当然程序员是最懒的啦,一个一个写多痛苦啊

接着找

还别说csdn里还有不少大牛的

于是出现了这个脚本

declare @s nvarchar(1000)
select @s=isnull(@s+‘,‘,‘‘)+quotename(Name) from syscolumns where ID=object_id(‘表名‘) and Name not in(‘排除字段‘) order by colid 
exec(‘select ‘+@s+‘ from 表名‘)

执行之后 哇 完美 正是我想要的结果

然后博主闲着没事又往下翻了翻有另外一个网友也给出了类似的方法代码如下:

得到表中除Col1、Col2的所有列
例如:userno_fm、userno_to
create table test(
       num int identity(1,1),
       userno_fm varchar(10),
       userno_to varchar(10),
       username varchar(10))
select * from test

declare @sql varchar(8000)
    select @sql=‘‘
    select @sql=@sql+‘,‘+[name] from 
    (select [name] from syscolumns where object_id(N‘[test]‘)=[id] and [name] not in (‘userno_fm‘,‘userno_to‘)) A

set @sql=‘select ‘+stuff(@sql,1,1,‘‘)+‘ from [test]‘
    --print @sql
    exec (@sql)

drop table test

执行一下 结果是相同的

也可以看出两个方法直接的差别

第一个堪称完美

第二个有点笨拙因为

select @sql=‘‘ select @sql=@sql+‘,‘+[name] from  可以用@s=isnull(@s+‘,‘,‘‘)代替

‘select ‘+stuff(@sql,1,1,‘‘) 不如 quotename(Name)方便直接

不过第二个也正是博主的写作风格所以博主才有切身的感受见到第一个代码如土鳖与到了女神

今天又一次感受到了编程之美,代码之美 心中一阵清风吹过 爽

博主又有了新猜想,以后直接用sql查询出json格式的数据就不用在后端第三方工具将table转换了

文中代码引自: http://bbs.csdn.net/topics/330143955#quote

时间: 2024-11-10 14:40:08

如何查询一个表中除某几个字段外其他所有的字段的相关文章

SqlSever基础 SUM 查询一个表中的一列的数值总和

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 table 2 code 1 --创建一个数据库 2 create database helloworld1 3 4 use master 5 drop database helloworld1 6 7 --用helloworld1这个数据库 8 use helloworld1 9 10 --

Oracle中查询一个表中字段(列)个数

如果一个表中有很多的字段,而我们想要知道这个表中的字段个数,如果使用如下方式一个一个数,则显得很麻烦 Oracle中可以使用如下sql来查询字段(列)个数 select count(*) from user_tab_columns where table_name=upper('表名') 或者 select max(column_id) from user_tab_columns where table_name=upper('表名') 作者:itmyhome 链接:http://blog.cs

SQL查询一个表中类别字段中Max()最大值对应的记录

问题是: 数据库有一个表 code,里面有个点击量字段click_num和一个类别字段kind以及其它信息字段, 现在要搜出每个类别中点击量最大的那条记录,如果是10个类别,那么结果应该是10条记录, 如果最大点击量有两个相同的只要一条. 经过N次搜索,N次检测网上的解决SQL语句,终于找到个优雅的而且结果正确的SQL,这个是一个博客作者在Mysql的官方文档里面发现的. 禁不住收藏了,以备后用. select id,kind,click_num from code as a where  cl

sql语句查询一个表中某一列的相同数据

1.找出这列中有相同内容的列的数据.代码如下: select 列名 from 表名 group by 列名 having count(列名) > 1 2.把这些有相同内容的记录,查出来.代码如下: select 列名 from 表名 where 列名 in (select 列名 from 表名 group by 列名 having count(列名) > 1)

SQL查询一个表中另外一个表不存在的数据-转

#方法一:使用 not in ,容易理解,效率低  ~执行时间为:1.395秒~SELECT COUNT(1) FROM ecs_goods WHERE ecs_goods.goods_id NOT IN (SELECT ecs_member_price.goods_id FROM ecs_member_price);#方法二:使用 left join...on... , "B.ID isnull" 表示左连接之后在B.ID 字段为 null的记录  ~执行时间:0.739秒~SELE

[oracle]查询一个表中数据的插入时间

select to_char(scn_to_timestamp(ORA_ROWSCN),'yyyy-mm-dd hh24:mi:ss') insert_time from tablename; 原文地址:https://www.cnblogs.com/alfredsun/p/10509612.html

MySQL查询数据表中数据记录(包括多表查询)

MySQL查询数据表中数据记录(包括多表查询) MySQL查询数据表中数据记录(包括多表查询) 转自:http://www.baike369.com/content/?id=5355 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: select selection_list // 要查询的内容,选择哪些列 from table_list // 从什么表中查询,从何处选择行 where primary_

oracle删除一个表中的重复数据,且只保留一条

例子1:查找一个表中的重复数据,重复记录是根据单个字段(Id)来判断,表名为STUDENT SELECT ID , COUNT(1) FROM STUDENT T GROUP BY T.ID HAVING COUNT(ID) > 1 例子2:删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录,表名为STUDENT DELETE FROM STUDENT WHERE ID IN (SELECT ID FROM STUDENT T GROUP BY T.ID H

SQL语句技巧:查询存在一个表而不在另一个表中的数据记录

原文:SQL语句技巧:查询存在一个表而不在另一个表中的数据记录 方法一(仅适用单个字段)使用 not in ,容易理解,效率低 select A.ID from A where A.ID not in (select ID from B) 方法二(适用多个字段匹配)使用 left join...on... , "B.ID isnull" 表示左连接之后在B.ID 字段为 null的记录 select A.ID from A left join B on A.ID=B.ID where