gpt4 book ai didi

php - MySQL ORDER BY 根据日期时间查询返回不正确的结果

转载 作者:行者123 更新时间:2023-11-29 02:53:30 26 4
gpt4 key购买 nike

我遇到了一些我不理解的 MySQL 查询行为

我正在运行 MySQL 5.5.42

我有什么

我有一个包含列的表格:

  • id(整数,自动递增)
  • party_id(int - 添加行时由后端设置)
  • added_on(日期时间 - 添加行时由后端设置,即我不使用 ON UPDATE CURRENT_TIMESTAMP)

我想做什么

我想执行以下查询:

SELECT * FROM my_table WHERE party_id = 1 ORDER BY added_on ASC

SELECT * FROM my_table WHERE party_id IN (1,2,3...) ORDER BY added_on ASC

当 added_on 日期对于同一个 party_id 相同时会出现奇怪的行为(如上所述,added_on 日期由后端而不是 MySQL 设置)

例如:

  • id = 100
  • party_id = 1
  • added_on = 2015-10-12 00:00:00

  • id = 101
  • party_id = 1
  • added_on = 2015-10-12 00:00:00

当我运行此查询时 (SELECT * FROM my_table WHERE party_id = 1 ORDER BY added_on ASC) 返回的结果顺序为 id = 100 然后 id = 101(这是它们的顺序尽管日期相同,但仍添加了)。

当我运行此查询时 (SELECT * FROM my_table WHERE IN (1,2,3,4,5) ORDER BY added_on ASC) 返回的结果按 added_on 和 where added_on 的顺序是相同的,那么最低的 id (100) 排在前面。

我的问题

当我使用 WHERE party_id IN (1,2,3,4,5...89)(89 或以上)运行查询时,返回的结果按 added_on 的顺序排列,但其中added_on 是相同的,结果是相反的——所以在上面的例子中,party_id 为 1,结果返回 id = 101,然后返回 id = 100

请注意,它不需要是 id = 89 它只需要是 89+ 我在“party_id IN (...)”中查询的 ID

我测试了什么

我认为这可能是微时间问题,但两次都给我 .000000 作为微时间加上 - 正如我上面所说 - 我在插入行时使用相同的 added_on 日期,所以它们应该完全相同。

我也在 phpMyAdmin 中手动检查了这些查询并得到了相同的结果。本来以为是后端代码的问题,或者是我使用的框架的问题,现在看来不是。

知道我哪里出错了吗?

最佳答案

尝试只添加二阶列id:

SELECT * 
FROM my_table
WHERE party_id IN (1,2,3,89)
ORDER BY added_on ASC, id ASC

关于php - MySQL ORDER BY 根据日期时间查询返回不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33090933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com