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

如何在SQL中结合WHERE子句使用DISTINCT与UNION?

解决方案:在UNION查询的子句中添加WHERE条件并结合DISTINCT

直接在针对GPG表的查询部分追加WHERE子句即可,同时可以做一个小优化:UNION本身会自动对合并后的结果集去重,所以原语句里的DISTINCT其实是冗余的,可以省略(不影响最终结果,还能简化语句)。

修改后的语句(保留原写法)

如果你想保持原语句的DISTINCT写法,只需要在GPG的查询部分加上WHERE条件:

Dim query As String = "SELECT DISTINCT PNM FROM GPD UNION SELECT DISTINCT PNM FROM GPG WHERE GDN = 'A.04.01.002.001' ORDER BY PNM"

优化后的语句

因为UNION会自动去除两个结果集中的重复记录,所以子查询里的DISTINCT完全没必要,简化后的语句更高效:

Dim query As String = "SELECT PNM FROM GPD UNION SELECT PNM FROM GPG WHERE GDN = 'A.04.01.002.001' ORDER BY PNM"

结果验证

执行上述语句后,GPD表的所有PNM会和GPG表中GDN='A.04.01.002.001'的PNM合并,通过UNION自动去重后,最终得到你期望的结果:

PNM
GPPI12301001
GPPI12301002

内容的提问来源于stack exchange,提问作者roy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:55:26