MySQL 按另一个表的最后一行排序

标签 mysql sql-order-by

我有 2 个表,我想在其中获取表 A 的内容,但按照表 B 的值排序。我按 3 个值排序(已解决、回复日期,然后是日期)。但我的问题是它没有从表 B 中获取最后一行,所以结果不是我所期望的。这是我到目前为止的查询。

SELECT user_tickets.user_ticket_id, user_tickets.user_id, solved, subject, user_tickets.date AS date, user_tickets_replies.date AS reply_date
FROM user_tickets 
INNER JOIN user_tickets_replies ON user_tickets.user_ticket_id=user_tickets_replies.user_ticket_id && user_tickets.user_id = user_tickets_replies.user_id 
GROUP BY user_tickets.user_ticket_id 
ORDER BY solved ASC, reply_date DESC, date DESC
LIMIT 200

如何从 user_tickets_replies 获取最后的回复日期?

最佳答案

如果我没理解错的话,您有很多票,其中一些票有不止一张回复。您希望按最新的reply_date排序,但您发现排序不正确。

我可以考虑通过两种方法来解决此问题,具体取决于您希望查询返回给定工单的所有 reply_date,还是仅返回最新的。第一个选项是更改您的 ORDER BY:

ORDER BY solved ASC, MAX(user_tickets_replies.date) DESC, user_tickets.date DESC

这会使 reply_date 列保持当前状态,但仅使用最大日期进行排序。

第二个是更改您的SELECT:

SELECT ..., MAX(user_tickets_replies.date) AS reply_date

这会将 reply_date 列更改为在 user_tickets 中每行包含一个值,而不是在 user_tickets_replies 中每行包含一个值。

关于MySQL 按另一个表的最后一行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34208699/

相关文章:

php - MYSQL中auto_increment下一个值设置为NULL

mysql - Drupal 8 - 具有共享表(用户表/所有表)的多站点?

mysql - SQL 不查询文本数据

mysql - AppEngine + DataNucleus RDBMS + JPA 2 项目在使用 @OneToMany 注释时抛出异常

python - 按链式连接关系中的列排序

php - 无法在 Laravel 中创建外键

c# - 流畅的 NHibernate 查询 : OrderBy column of joined table

mysql - 带有 order 子句的相同查询,相同的数据集,但结果不同

MySQL - 如何订购连接表?