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

如何在MS SQL中合并查询:用动态列表筛选GL交易数据

在MS SQL中合并两个查询的可行方案

下面是几种把你的两个查询合并成一个的常用方法:

1. 内连接(INNER JOIN)—— 推荐用于关联查询

通过项目ID将两个表关联,直接筛选出活跃项目对应的GL交易记录:

SELECT gl.*
FROM GL gl
INNER JOIN PROJECTS p 
    ON gl.[PROJECT ID] = p.[PROJECT ID]
WHERE p.STATUS = 'ACTIVE'

注意:字段名包含空格时需要用方括号[]包裹;原查询里的STATUS IS ACTIVE是语法错误,SQL中判断字符串相等要用=,IS仅用于NULL相关判断。

2. IN子查询——逻辑直观的写法

把筛选活跃项目的查询作为子查询,放在IN条件里匹配GL表的项目ID:

SELECT *
FROM GL
WHERE [PROJECT ID] IN (
    SELECT [PROJECT ID]
    FROM PROJECTS
    WHERE STATUS = 'ACTIVE'
)

3. EXISTS子查询——大表场景性能更优

通过EXISTS检查当前GL记录是否存在对应的活跃项目,适合数据量较大的场景:

SELECT *
FROM GL gl
WHERE EXISTS (
    SELECT 1
    FROM PROJECTS p
    WHERE p.[PROJECT ID] = gl.[PROJECT ID]
      AND p.STATUS = 'ACTIVE'
)

额外提示

  • 确保PROJECTS和GL表的PROJECT ID字段数据类型一致,避免隐式转换拖慢查询速度
  • 如果需要保留GL表中无对应活跃项目的记录,可以把INNER JOIN换成LEFT JOIN,但要注意筛选条件的位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:14:57