【发布时间】:2020-10-13 22:55:45
【问题描述】:
任何人都有更好的想法来解决这个问题。
我有这张桌子
+------+------+
|Id |Value |
+------+------+
|1 |0 |
+------+------+
|1 |5 |
+------+------+
|2 |0 |
+------+------+
|2 |1 |
+------+------+
|3 |0 |
+------+------+
所以我的目标是获取不同的 Id 并获取第一个非零值(如果存在)。
看起来像这样
+------+------+
|Id |Value |
+------+------+
|1 |5 |
+------+------+
|2 |1 |
+------+------+
|3 |0 |
+------+------+
我的一个想法是对值求和,因为期望其余部分为 0,但这不起作用,因为它们可能具有超过 1 个值。
在这种情况下,我不在乎得到哪个值,只要我得到一个非零值。
这在 SQL 中是否可行,还是我应该在后端执行此操作?
MySQL 版本:5.7.26
【问题讨论】:
-
定义“第一”。
-
第一个非零值,此时如果有多个 id 的值大于零,那么我不在乎我会得到哪个。
标签: mysql select greatest-n-per-group window-functions