我尝试时使用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')
Run Code Online (Sandbox Code Playgroud)
它将返回以下结果:
50,100,75
Run Code Online (Sandbox Code Playgroud)
因为第42队在'2013-08-02'没有得分
我希望我能得到:
50,,100,75
Run Code Online (Sandbox Code Playgroud)
我应该使用什么SQL查询?
如果您的意思是得分为2013-08-02null,那么您应该使用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')
Run Code Online (Sandbox Code Playgroud)
如果您的意思是没有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')
Run Code Online (Sandbox Code Playgroud)
作为旁注,似乎你也可以使用 BETWEEN
SELECT GROUP_CONCAT(IFNULL(score, ''))
FROM DailyScore
WHERE team = '42'
AND Date BETWEEN '2013-08-01' AND '2013-08-04'
Run Code Online (Sandbox Code Playgroud)