sql - 从多个组中仅选择 1 个组
问题描述
我有桌子
Id | Provider | Value | IsNew
我想从这个表中选择唯一的Provider
并Value
为它。
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
在实际示例中查询要复杂得多,希望我能解释一下我想要的。
解决方案
如果它存在,您似乎想要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 小提琴。
推荐阅读
- python - 为什么 python3 ttk 复选框使用的任何选项都会出错?
- angular - 输入中的自动完成建议为光标后的灰色字母,而不是选择弹出窗口
- javascript - 对按键作出反应,只执行一次 setTimeout
- c++ - 用 CRTP 实例化和注册派生类的最佳方法?
- neo4j - 使用 apoc.load.jdbc() 时无法在 conf/neo4j.conf 中为数据库连接字符串起别名
- python - Python Scapy无线扫描并匹配存储在文本文件中的mac地址
- c++ - 有没有办法阻止编译器将 constexpr 函数放入目标文件中?
- amazon-web-services - 无服务器:根目录下的配置错误:无法识别的属性“stepFunctions”
- javascript - 函数包装器返回函数而不是实际对象
- javascript - React setState 没有更新状态