我很乐意为你提供帮助。
我有一张这样的表:
[MS_CODE] [MS_SML]
1 43
1 AA
2 51
3 24
3 21
4 11
4 43
5 AA
6 11
我想编写一个查询来搜索[MS_SML],该查询显示在[MS_Code]的组(1或2或3)和(4或5或6)中。
例如:
43,AA因为43是连续的,其中ms_code是1和4,并且对于' AA'是相同的。我想创建这样的输出:[MS_Code] [MS_SML]
1 43
4 43
1 AA
5 AA
非常感谢你的帮助!
答案 0 :(得分:1)
一种方法是使用exists
并应用您的条件:
select t.*
from t
where exists (select 1
from t t2
where t2.ms_sml = t1.ms_sml and t2.ms_code in (1, 2, 3)
) and
exists (select 1
from t t2
where t2.ms_sml = t1.ms_sml and t2.ms_code in (4, 5, 6)
);
答案 1 :(得分:0)
这是一种方法。
select ms_code, ms_sml
from msc
where ms_sml in
(
select ms_sml
from msc
where ms_code in (1,2,3)
intersect
select ms_sml
from msc
where ms_code in (4,5,6)
)
order by ms_sml, ms_code
注意:如果同一组中给定ms_sml有多个ms_code,则会返回所有这些ms_code。 假设AA映射到1,3和5,这将返回
1 AA
3 AA
5 AA
如果这是一个问题,我们可能需要额外的逻辑来处理:例如,在组内选择ms_code的最小值。