You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL连接查询中排除SMCourse表的remarks列

问题解答

为什么EXCEPT不生效

EXCEPT是行级操作符,作用是对比两个查询的结果集,返回存在于第一个查询、但不存在于第二个查询的整行数据,不支持列级别的筛选排除,所以没法用它来去掉单个列。

最简单的实现方案

不要使用SELECT *通配符查询所有列,改为显式指定需要返回的字段即可,这也是所有SQL数据库通用的标准写法:

  • 除SMCourse表之外的其他关联表,如果需要返回全部字段,可以直接用表别名.*简写,不用逐列罗列
  • 对于SMCourse表,只需要列出除remarks之外你实际需要用到的字段即可

修改后的示例SQL如下:

select 
  coll.*,
  colldtl.*,
  challan.*,
  period.*,
  -- 下方按需列出course表除remarks外的所需字段即可
  course.Id,
  course.CourseName,
  course.CourseCode,
  course.Credit,
  section.*,
  std.*
from SMFeecollectionhdr coll
join SMFeecollectiondtl colldtl on colldtl.transid = coll.id 
join SMFeechallanhdr challan on challan.Id = colldtl.challanid
join SMPerioddtl period on period.Id = challan.perioddtlid
join SMCourse course on course.Id = challan.courseid
join SMSection section on section.Id = challan.sectionid
join SMStudentinfo std on std.Id = coll.studentid
where coll.entityid = 5030

注:部分数据库(比如SQL Server、PostgreSQL)支持通过动态SQL自动生成列名,省去手动罗列字段的步骤,但这种写法依赖数据库特定语法,可移植性差,日常开发中优先选择上述显式指定列的写法,兼容性最好,也能避免表结构变动时返回意外字段。

内容的提问来源于stack exchange,提问作者Syed Raza Abbas SRA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 20:12:20