mysql - 当有多个最大值时仅选择 1 行

标签 mysql sql

我想选择 A 列中的最大值。现在,我在 A 列中有多个最大值。如何才能只取 1 行包含最大值的行并去掉其余行?我尝试使用 distinctlimit 1 但没有成功。

预期:只有 2 行,其中 1 行包含消息“srth”,另一行包含“the-same-ts-1”或“the-same-ts-2”,但不能同时包含两者,因为它们具有相同的最大 ts 1413588888

我的查询:

SELECT A.*, DU.user as username, DU.thumbnail 
            FROM DB_CHATS A
            INNER JOIN (
               SELECT distinct max(timestamp) TS, user, partner
               FROM db_chats
               GROUP BY  user,partner ) T
              on A.TimeStamp=T.TS 
             and A.user=T.User
            LEFT JOIN  db_users DU on t.partner = DU.id
where A.user = 'utQ8YDxD6kSrlI5QtFOUAE4h'

fiddle :sqlfiddle

最佳答案

如果您不关心返回哪一行具有最大时间戳,则可以将按用户、合作伙伴、时间戳分组添加到查询末尾。

SELECT A.*, DU.user as username, DU.thumbnail 
            FROM DB_CHATS A
            INNER JOIN (
               SELECT distinct max(timestamp) TS, user, partner
               FROM db_chats
               GROUP BY  user,partner ) T
              on A.TimeStamp=T.TS 
             and A.user=T.User
            LEFT JOIN  db_users DU on t.partner = DU.id
where A.user = 'utQ8YDxD6kSrlI5QtFOUAE4h'
group by user, partner, timestamp

http://sqlfiddle.com/#!2/efe6e/2

关于mysql - 当有多个最大值时仅选择 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26433686/

相关文章:

java - 找不到类名 : com. mysql.jdbc.Driver 的驱动程序

php - 如何正确使用PDO

mysql - 保存或更新时自动插入日期列之间经过的天数

mysql - 如何在关系数据库中实现 "number of likes"

php - 在 Symfony Doctrine 查询生成器中选择具有 x 标签的产品

java - Hibernate如何删除连接表中具有空列的行

php - 使用 Laravel 创建 LMS 并向学生分配类(class)

c# - 如何使用 SqlDataAdapter 从数据集中存储的 sql 过程中获取数据?

java - "IndexOutOfBoundsException"因为空值?

SQL 难题,如何选择零件的最新日期,但每个零件只有 1 行(唯一)