我有一个结构表
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?
答案 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
)。