-1

当我尝试时,我正在使用 mysql:

SELECT GROUP_CONCAT(score)
FROM DailyScore
WHERE team = '42'
AND Date IN('2013-08-01','2013-08-02','2013-08-03','2013-08-04')

它将返回结果:

50,100,75

因为 42 队在 '2013-08-02' 没有得分

我希望我能得到:

50,,100,75

我应该使用什么 sql 查询?

4

1 回答 1

5

如果您的意思是分数为2013-08-02空,那么您应该使用IFNULL

SELECT GROUP_CONCAT(IFNULL(score, ''))
FROM DailyScore
WHERE team = '42'
AND Date IN('2013-08-01','2013-08-02','2013-08-03','2013-08-04')

如果您的意思是没有2013-08-02团队记录42,您应该使用日历表查看

SELECT GROUP_CONCAT(IFNULL(score, ''))
FROM DailyScore
RIGHT JOIN Calendar ON Calendar.Date = DailyScore.Date
                   AND team = '42'
AND Calendar.Date IN('2013-08-01','2013-08-02','2013-08-03','2013-08-04')

演示

作为旁注,您似乎也可以使用BETWEEN

SELECT GROUP_CONCAT(IFNULL(score, ''))
FROM DailyScore
WHERE team = '42'
AND Date BETWEEN '2013-08-01' AND '2013-08-04'
于 2013-08-07T20:56:44.173 回答