我有下表,其中SL是唯一值,Number列可以有2个类型A或B.我想忽略具有类型B的数字,当相同的数字也有类型A.
SL Number Type
1 101 A
2 102 A
3 102 B
4 103 A
5 104 B
预期结果
SL Number Type
1 101 A
2 102 A
4 103 A
5 104 B
答案 0 :(得分:1)
试试这个:
SELECT t1.SL, t1.Number, t1.Type
FROM mytable t1
WHERE t1.Type = 'A' OR NOT EXISTS
(
SELECT 1
FROM mytable t2
WHERE t2.Number = t1.Number AND t2.Type = 'A'
)
<强>解释强>
由于
,查询会选择所有A
行
t1.Type = 'A'
和所有 B
行,前提是 NOT EXISTS
运算符的sbuquery返回 no 行。这个子查询
SELECT 1
FROM mytable t2
WHERE t2.Number = t1.Number AND t2.Type = 'A' -- t1 is a reference to the outer table
如果存在与A
记录具有相同Number
的{{1}}记录,则会返回一行。
答案 1 :(得分:0)
&#39; B&#39;大于&#39; A&#39; 所以不能存在较小的类型。
SELECT *
FROM yourtable t
WHERE NOT EXISTS
(
SELECT 1
FROM yourtable dup
WHERE dup.Number = t.Number
AND dup.Type < t.Type
)
这样就可以选择每个数字的最小类型。即使有额外的类型。