MySQL - Group By 使用不同的值

标签 mysql

我有一个消息表,下面显示了 3 行 - 第二行和第三行在 2 个用户之间。

当我查询此表并使用 Group By 时,我得到了两行,但我只想要一行。

这是查询:

SELECT a.receiver ORDER BY a.datetime DESC LIMIT 25;

当两个用户都是发送者/接收者时,有没有办法限制一行返回。

谢谢

最佳答案

首先您可以按较大的数字分组,然后按较小的数字分组。

SELECT
    a.sender,
    a.receiver,
    a.message,
    a. READ,
    a.datetime
FROM
    messages AS a
WHERE
    (
        a.sender = '1000000000'
        OR a.receiver = '1000000000'
    )
GROUP BY IF(a.sender > a.receiver, a.sender, a.receiver), 
         IF(a.sender > a.receiver, a.receiver,a.sender) 
ORDER BY    a.datetime DESC
LIMIT 25;

注意:

第一个 IF 选择较大的数字,第二个 IF 选择较小的数字。

关于MySQL - Group By 使用不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37114414/

相关文章:

php - 将完整查询添加到 PHP session 变量?

mysql - 如何在不创建表(架构)的情况下从文本文件加载mysql中的数据

java - 序列化和对象有意义吗

mysql - 如何设计: users with different roles see different records

php - Composer 更新 php laravel 时出错? ("laravel/framework": "~5.0")

php - PHP MySQL 获取数组函数的问题

MySql 查询在字段中包含一个字符串

MYSQL - 如何根据范围对数据进行分组并对其进行计数

mysql - 使用group by时的条件计算

mysql - 在 MySQL 中使用复合键更新多行