类似的MySQL查询返回不同的排序

时间:2015-12-21 16:04:18

标签: mysql sorting group-concat

我有两个查询,它们都应该以相同的顺序返回thumbUrls。我的目标是使用第二个查询,因为它必须是另一个查询的一部分,这将不适用于第一个查询。我已经打破了查询,但找不到区别的是什么。

查询一:

SELECT album, thumbUrl
FROM lychee_photos
WHERE album = '16'
ORDER BY takestamp ASC, id DESC LIMIT 3;

结果:

-------------------------------------------------
| album | thumbUrl                              |
-------------------------------------------------
| 16    | 48c4d04567590b44a0c604197a049ef5.jpeg |
| 16    | 5db0fce4937104e7d27dae64d6cd9990.jpeg |
| 16    | a70bb8499b683b1eeab17336c3f07f7e.jpeg |
-------------------------------------------------

查询二:

SELECT album, substring_index(
    GROUP_CONCAT(thumbUrl ORDER BY takestamp ASC, id DESC), ',', 3
) AS thumbs
FROM lychee_photos
WHERE album='16'
GROUP BY album;

结果:

-----------------------------------------------------------------------------------------------------------------------------
| album | thumbUrl                                                                                                          |
-----------------------------------------------------------------------------------------------------------------------------
| 16    | 1b98e17f1af051753a958c18953adbd5.jpeg,c506f4fedb8a4df691d276d6abdb75f7.jpeg,f0cc0ba23effc0443f367ca63dd1e72f.jpeg |
-----------------------------------------------------------------------------------------------------------------------------

预期输出:

我希望看到thumbUrls与查询一中的顺序相同。

-----------------------------------------------------------------------------------------------------------------------------
| album | thumbUrl                                                                                                          |
-----------------------------------------------------------------------------------------------------------------------------
| 16    | 48c4d04567590b44a0c604197a049ef5.jpeg,5db0fce4937104e7d27dae64d6cd9990.jpeg,a70bb8499b683b1eeab17336c3f07f7e.jpeg |
-----------------------------------------------------------------------------------------------------------------------------

其他详细信息:

  • 查询之间的数据没有变化
  • 删除substring_index()不会影响订单
  • 当我删除substring_index()
  • 时,正确的thumbUrls会出现在查询2的中间

第一个查询返回正确排序的thumbUrls - 第二个查询没有。但为什么?如何保留第二个的输出格式并获得正确的排序?

0 个答案:

没有答案