sql数据库中,多表查询时,是否有语句可以查询除了某个字段以外的所有字段?

clipboard.png

这么写sql语句的话,会导致id出现两次,想问下有没有个语句可以排除掉第二次的id1?
比如说select *,not(tt.id) from tt INNER JOIN test1 on tt.id=test1.id(我编的),这种意思的语句?

我知道有一个是可以实现 就是
select tt.id,tt.is_deleted,test1.name from tt INNER JOIN test1 on tt.id=test1.id
但是这是字段少的时候,如果字段多,写起来就会很复杂。

阅读 8.2k
3 个回答
DECLARE @Except VARCHAR(1000)

SET @Except=''

SELECT @Except=@Except+','+NAME FROM SYSCOLUMNS WHERE ID=OBJECT_Id('你的表名') AND NAME<>'你要排除的字段'

SET @Except=STUFF(@Except,1,1,'')

EXEC('SELECT '+@Except+' FROM 你的表名')

--只需将三个地方分别替换为你的表名和字段就行了

这是我原测试表查询结果:
图片描述

这是排除Id这一列后的查询结果:
图片描述

成功将Id列排除

select tt.*,test1.name from tt inner join test1 on tt.id=test1.id图片描述

最简单的办法就是,对这两张表建立一个视图表,建视图时选择必要的字段信息。然后查询就直接查询视图了,很好的避免了你遇到的这种问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进