Mysql 根据组中最小值和最大值的差异查询以获取项目
假设我有以下条目:Mysql 根据组中最小值和最大值的差异查询以获取项目,mysql,sql,Mysql,Sql,假设我有以下条目: ID Title Year 1 Avatar 2009 2 Avatar 2020 3 Hello 2014 4 Hello 2013 5 New 2017 以下是我将如何获得每一个标题及其所有年份: SELECT title, GROUP_CONCAT(DISTINCT Year) FROM table 它会给我: Title
ID Title Year
1 Avatar 2009
2 Avatar 2020
3 Hello 2014
4 Hello 2013
5 New 2017
以下是我将如何获得每一个标题及其所有年份:
SELECT title, GROUP_CONCAT(DISTINCT Year) FROM table
它会给我:
Title Years
Avatar 2009,2020
Hello 2013,2014
New 2017
如果最小值(年份)与最大值(年份)相差5年以上,我将如何进行查询以获得所有结果。正确的结果是:
Title Years > 5 Year Diff
Avatar 2009,2020 YES
Hello 2013,2014 NO
New 2017 NO
你的第一个问题是错误的。应该是:
SELECT title, GROUP_CONCAT(DISTINCT Year)
FROM table
GROUP BY title;
要实现您想要的,只需一个CASE
表达式:
SELECT title, GROUP_CONCAT(DISTINCT Year),
(CASE WHEN MAX(YEAR) - MIN(YEAR) > 5 THEN 'YES' ELSE 'NO' END) as flag
FROM table
GROUP BY title;
通常,这样的标志会被编码为“1”表示真,而“0”表示假。在这种情况下,您只需将布尔表达式用于标志:
SELECT title, GROUP_CONCAT(DISTINCT Year),
(MAX(YEAR) - MIN(YEAR) > 5) as flag
FROM table
GROUP BY title;
请注意,这是一个MySQL扩展(但它恰好是我喜欢的扩展)。谢谢——第二种方法非常优雅,也很容易阅读。感谢您指出我查询中的错误/打字错误。