假设我有以下条目:
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
答案 0 :(得分:1)
您的第一个查询是错误的。应该是:
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扩展(但恰好是我喜欢的扩展)。