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

如何修改SQL查询实现source_id与data_id的逐一绑定?

实现source_id与data_id的逐一绑定查询

嘿,这个需求我经常碰到,给你分享几种靠谱的实现方式,你可以根据实际场景选:

方法1:用OR组合成对的AND条件(适合少量绑定组)

这是最直观的写法,直接把每一组绑定关系用AND组合,再用OR连接起来:

SELECT * 
FROM some_table 
WHERE (source_id = '123' AND data_id = '1')
   OR (source_id = '124' AND data_id = '2');

这种写法逻辑清晰,新手也一眼能看懂,就是绑定组多了的话,SQL会显得冗长。

方法2:用VALUES构造匹配表+JOIN(适合大量绑定组)

如果以后要加更多的绑定对,推荐用这种方式,维护起来更方便:

SELECT t.*
FROM some_table t
JOIN (VALUES 
    ('123', '1'),
    ('124', '2')
    -- 以后加新的绑定组直接在这里加行就行
) AS matches(s_id, d_id) 
    ON t.source_id = matches.s_id 
    AND t.data_id = matches.d_id;

核心思路是先构造一个临时的匹配关系表,再通过JOIN把原表中符合对应关系的行筛选出来,扩展性拉满。

方法3:用CASE表达式判断(小众但可行)

还有一种用CASE的写法,虽然不如前两种常用,但也算一种思路:

SELECT *
FROM some_table
WHERE CASE source_id
    WHEN '123' THEN data_id = '1'
    WHEN '124' THEN data_id = '2'
    ELSE FALSE
END;

这里通过CASE对每个source_id判断对应的data_id是否符合,不符合就返回FALSE,从而过滤掉不匹配的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:27:45