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

如何筛选同时出现在同一表两个SQL查询结果中的id?

筛选同时满足两个条件的ID的SQL实现方法

以下是几种实用的实现方式,都能得到你需要的ID(102、110、140):

方法1:使用INTERSECT取交集

INTERSECT关键字专门用于获取两个查询结果的交集,写法最直观:

SELECT id FROM sval WHERE fid = 994 AND val = 'XLON'
INTERSECT
SELECT id FROM sval WHERE fid = 900 AND val = 'Equity';

方法2:使用IN子查询

把第二个查询的结果作为筛选条件,直接在第一个查询里匹配ID:

SELECT id FROM sval 
WHERE fid = 994 AND val = 'XLON'
AND id IN (
    SELECT id FROM sval WHERE fid = 900 AND val = 'Equity'
);

方法3:使用JOIN连接结果

将两个查询的结果作为临时表进行内连接,只保留ID相同的记录:

SELECT t1.id
FROM (SELECT id FROM sval WHERE fid = 994 AND val = 'XLON') t1
JOIN (SELECT id FROM sval WHERE fid = 900 AND val = 'Equity') t2
ON t1.id = t2.id;

方法4:使用GROUP BY + HAVING统计匹配次数

直接在原表中筛选出同时满足两个条件的ID,通过统计每个ID符合条件的次数来判断:

SELECT id
FROM sval
WHERE (fid = 994 AND val = 'XLON') OR (fid = 900 AND val = 'Equity')
GROUP BY id
HAVING COUNT(DISTINCT fid) = 2;

注:如果同一个ID在同一条件下可能出现多条记录,用COUNT(DISTINCT fid)确保是两个不同的条件都匹配;要是每个条件下每个ID只会出现一次,直接用COUNT(*) = 2也可以。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:05:20