以下查询对我有用,并以“1755 | 1755.jpg”格式返回数据:
SELECT (CAST(GROUP_CONCAT(CONCAT(photoId, '|', photoFileName)) AS CHAR(10000) CHARACTER SET utf8)) AS recentPhotoList
FROM
(
SELECT photoId, photoFileName
FROM photo
WHERE photoAlbumId = _albumId
AND photoPublishDate >= DATE_ADD(tStartDate, INTERVAL -20 MINUTE)
AND photoPublishDate <= tStartDate
ORDER BY photoPublishDate DESC
LIMIT 0,1
) as subQuery
);
但是,只需在查询中附加另一列('photoCaption'),它就不会返回任何内容?!?为什么是这样?为什么要添加一个额外的列导致它执行此操作?
以下是导致问题的修改后的查询:
SELECT (CAST(GROUP_CONCAT(CONCAT(photoId, '|', photoFileName, '|', photoCaption)) AS CHAR(10000) CHARACTER SET utf8)) AS recentPhotoList
FROM
(
SELECT photoId, photoFileName, photoCaption
FROM photo
WHERE photoAlbumId = _albumId
AND photoPublishDate >= DATE_ADD(tStartDate, INTERVAL -20 MINUTE)
AND photoPublishDate <= tStartDate
ORDER BY photoPublishDate DESC
LIMIT 0,1
) as subQuery
);
答案 0 :(得分:3)
我认为如果photoCaption为null,则concat返回null。在photoCaption周围使用coalesce来解决这个问题。
答案 1 :(得分:2)
photoCaption为NULL。
也许您可以检查子查询的结果,看看发生了什么。
SELECT CONCAT('bla', '|','-' , '|','|', 'bla', NULL) as foobar;
返回NULL
SELECT CONCAT('bla', '|','-' , '|','|', 'bla') as foobar;
返回bla | - || bla
祝你好运