Tsql 将两张桌子连接在一起
我有一个Tsql 将两张桌子连接在一起,tsql,Tsql,我有一个select查询,它以以下方式返回两列。如果有助于解决问题,我可以将其放在临时表中或将其设置为CTE。问题将在后面列出 id (cnt) 28002 11 28010 14 28029 13 28037 7 28045 6 28053 3 28061 6 28070 5 28100 5 28118 10 29009 1 但是我现在想从另一个表中选择,它有以下定义 id sub_id numberOfObjects 所以样本数据可以是
select
查询,它以以下方式返回两列。如果有助于解决问题,我可以将其放在临时表中或将其设置为CTE。问题将在后面列出
id (cnt)
28002 11
28010 14
28029 13
28037 7
28045 6
28053 3
28061 6
28070 5
28100 5
28118 10
29009 1
但是我现在想从另一个表中选择,它有以下定义
id
sub_id
numberOfObjects
所以样本数据可以是
id sub_id numberofObjects
28002 203125 10
28002 203126 56
28002 203127 75
28002 203128 76
28002 203129 5
28002 203130 50
28061 203131 26
28061 203132 7
28061 203133 14
28061 203134 32
29009 105678 33
如您所见,一个id
有许多sub\u id
我的目标是:
对于第一个select语句中的每个id,我希望它与第二个select语句中的id匹配,并在numberOfObjects小于15的情况下提取所有子id
所以我的结果应该是
id sub_id numberofObjects
28002 203125 10
28002 203129 5
28061 203132 7
28061 203133 14
这个怎么样:
SELECT f.id
, ot.sub_id
, ot.numberofobjects
FROM
( ...first query...) f
JOIN otherTable ot
ON ot.id = f.id
WHERE ot.numberofobjects < 15
选择f.id
,ot.sub_id
,ot.numberofobjects
从…起
(…第一个查询…)f
加入其他表ot
在ot.id=f.id上
其中ot.numberofobjects<15
如果您希望主id出现,即使没有子id少于15
SELECT f.id
, ot.sub_id
, ot.numberofobjects
FROM
( ...first query...) f
LEFT JOIN otherTable ot
ON ot.id = f.id
AND ot.numberofobjects < 15
选择f.id
,ot.sub_id
,ot.numberofobjects
从…起
(…第一个查询…)f
左连接其他表ot
在ot.id=f.id上
和ot.numberofobjects<15
是的,您可以使用CTE而不是内联视图