MySQL获取默认或最小行的值

时间:2018-07-25 11:13:40

标签: mysql sql

我有一个结构表

ID|GROUP_ID|DEFAULT|VALUE
13|      10|      0|   20
14|      11|      0|   30
15|      10|      0|   40
16|      10|      1|   50
17|      11|      0|   60

我想按规则为每个GROUP_ID获取一行:

如果GROUP_ID具有DEFAULT = 1的行,我必须得到这一行

如果GROUP_ID没有DEFAULT = 1的行,我必须使用MIN(VALUE)的行

对于上述数据,结果应为:

16|10|1|50
14|11|0|30

我该如何使用MySql?

1 个答案:

答案 0 :(得分:2)

您可以在MySQL中执行此操作。这是一种方法:

example.com/tools

子查询根据您的规则对给定组的所有行进行排序。表达式select t.* from t where t.id = (select t2.id from t t2 where t2.group_id = t.group_id order by (default = 1) desc, value asc limit 1 ); 将默认值放在第一位。在数字上下文中,MySQL将布尔值视为数字,其中“ 1”为true,“ 0”为false(因此(default = 1) desc)。