首页 > 解决方案 > 从多个组中仅选择 1 个组

问题描述

我有桌子

Id | Provider | Value | IsNew

我想从这个表中选择唯一的ProviderValue为它。

SELECT Provider, Value
FROM Table
GROUP BY Provider, Value

但是我还需要按IsNew字段分组,因为当 Provider = '3' 时我只需要选择“新”记录。

它应该是这样的:

Id | Provider | Value | IsNew
______________________________
1  | 1        | 310   | 0
______________________________
2  | 2        | 25    | 0
______________________________
3  | 3        | 250   | 0
______________________________
4  | 3        | 252   | 1

结果我需要选择

Provider | Value 
_________________
1        | 310   
_________________
2        | 25    
_________________
3        | 252  

在实际示例中查询要复杂得多,希望我能解释一下我想要的。

标签: sqlsql-serverselectgroup-by

解决方案


如果它存在,您似乎想要isNew = 1其他记录。

我认为这可以满足您的要求:

SELECT t.Provider, t.Value
FROM Table t
WHERE t.isNew = 1
UNION ALL
SELECT t.Provider, t.Value
FROM Table t
WHERE t.isNew = 0 AND
      (NOT EXISTS (SELECT 1 FROM table t2 WHERE t2.Provide = t.Provide AND t2.isNew = 1);

是 SQL 小提琴。


推荐阅读