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

WHERE子句多表SQL查询:根据UserID获取GetID的实现

这需求很清晰,我给你整理两种实用的SQL查询方案,先把你的表结构和样本数据理清楚,方便理解逻辑:

表结构与样本数据

Table_1

GetIDUnitID
11
12
13
24
25
35
36
46

Table_2

IDUnitIDUserID
111
121
131
141
152
163

你的核心需求是:给定一个UserID,找出所有至少有一个关联的UnitID属于该UserID的GetID。比如UserID=1时返回1、2,UserID=2时返回2、3。

方案1:子查询写法(逻辑直观)

先通过子查询拿到目标UserID对应的所有UnitID,再匹配Table_1里关联这些UnitID的GetID,最后用DISTINCT去重(因为一个GetID可能对应多个符合条件的UnitID):

SELECT DISTINCT t1.GetID
FROM Table_1 t1
WHERE t1.UnitID IN (
    SELECT t2.UnitID
    FROM Table_2 t2
    WHERE t2.UserID = @TargetUserID -- 替换成你要查询的UserID,比如1或2
);

方案2:JOIN关联写法(性能友好)

直接通过UnitID把两个表关联起来,筛选目标UserID后去重,大数据量下如果有合适的索引,这个写法性能可能更好:

SELECT DISTINCT t1.GetID
FROM Table_1 t1
JOIN Table_2 t2 ON t1.UnitID = t2.UnitID
WHERE t2.UserID = @TargetUserID;

验证结果

  • 当@TargetUserID = 1时,Table_2里UserID=1的UnitID是1、2、3、4,Table_1中关联这些UnitID的GetID是1(对应1/2/3)和2(对应4),返回1,2,符合预期。
  • 当@TargetUserID = 2时,Table_2里UserID=2的UnitID是5,Table_1中关联UnitID=5的GetID是2和3,返回2,3,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:47:16