gpt4 book ai didi

mysql - SQL检查列值是否变化

转载 作者:行者123 更新时间:2023-11-29 01:58:28 26 4
gpt4 key购买 nike

假设我们有两个具有 1 对 n 关系的表

group
--+-------+
id|name |
--+-------+
1 | GROUP1|
2 | GROUP2|
3 | GROUP3|
--+-------+

unit
--+-----+-----+------+
id|group|value|status|
--+-----+-----+------+
1| 1 | 0 | 0 |
2| 1 | 20 | 0 |
3| 1 | 5 | 0 |
4| 2 | 1 | 1 |
5| 2 | 3 | 1 |
6| 2 | 0 | 1 |
7| 3 | 5 | 1 |
8| 3 | 8 | 0 |
9| 3 | 6 | 0 |

我怎么知道某行在组中是否是唯一的?如果不是唯一的,它有什么值(value)?例如:

SELECT 
DISTINCT `group`.id,
`group`.name,
MIN(unit.value) AS 'min',
MAX(unit.value) AS 'max',
isUnique(unit.status) AS 'status'
FROM unit JOIN `group` ON unit.`group` = `group`.id
GROUP BY `group`.id
ORDER BY `group`.id

应该返回:

--+-------+---+---+------+
id|name |min|max|status|
--+-------+---+---+------+
1 | GROUP1|0 |20 | all 0|
2 | GROUP2|0 |3 | all 1|
3 | GROUP3|5 |8 | both |
(status is in string just to ilustarate returned values)

最佳答案

您可以使用 GROUP_CONCAT 每个组具有不同的状态

SELECT 
DISTINCT `group`.id,
`group`.name,
MIN(unit.value) AS 'min',
MAX(unit.value) AS 'max',
GROUP_CONCAT(DISTINCT unit.status) AS 'status'
FROM unit JOIN `group` ON unit.`group` = `group`.id
GROUP BY `group`.id
ORDER BY `group`.id

结果会是

--+-------+---+---+------+
id|name |min|max|status|
--+-------+---+---+------+
1 | GROUP1|0 |20 | 0 |
2 | GROUP2|0 |3 | 1 |
3 | GROUP3|5 |8 | 1,0 |

Fiddle

关于mysql - SQL检查列值是否变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21318023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com