0
我在下面創建了數據庫函數。但是,當我運行它時,結果排序不正確,也沒有應用LIMIT。例如,回到我的數據是:MYSQL函數和GROUP_CONCAT問題
31471|31471.jpg,31472|31472.jpg,31473|31473.jpg,31474|31474.jpg,31475|31475.jpg,31476|31476.jpg,31478|31478.jpg,31479|31479.jpg
正如你可以看到,有3個以上的結果(LIMIT沒有工作),當他們要降的是上升的ID,即使它按日期排序( ORDER BY not working)
與此函數唯一不同的是GROUP_CONCAT。是造成這個問題,爲什麼。如果不是,那麼函數有什麼問題?
感謝
DELIMITER $$
DROP FUNCTION IF EXISTS `fnAlbumGetRecentPhotoList` $$
CREATE DEFINER=`root`@`%` FUNCTION `fnAlbumGetRecentPhotoList`(_albumId int) RETURNS varchar(1024) CHARSET utf8
BEGIN
-- ----------------------------------------------------------------------
-- Gets a list of 3 most recent photos for an album
-- ----------------------------------------------------------------------
DECLARE _outRecentPhotoList VARCHAR(1024);
SET _outRecentPhotoList = (
SELECT (CAST(GROUP_CONCAT(CONCAT(photoId, '|', photoFileName)) AS CHAR(10000) CHARACTER SET utf8)) AS recentPhotoList
FROM photo
WHERE photoAlbumId = _albumId
ORDER BY photoCSD DESC
LIMIT 0,3
);
RETURN _outRecentPhotoList;
END $$
DELIMITER ;
啊哈感謝,這是它。 – Cheeky 2011-03-22 18:37:17
將Group_CONCAT的列轉換爲varchar(255)數據類型是不可能的? – user4033385 2016-03-22 17:28:04
@ user4033385:否,CAST()僅支持某些類型,包括CHAR,但不支持VARCHAR:http://dev.mysql.com/doc/refman/5.6/en/cast-functions.html#function_cast – 2016-03-22 18:46:09