mysql - 关于 SQL 行过滤器

标签 mysql sql select group-by greatest-n-per-group

我在sql中有这种类型的数据库表

id | state | msg | userid | time |
1  |unread | hi  |    1   | time |
2  |unread |hello|    1   | time | 
3  |unread | hi  |    2   | time |
4  | read  | hi  |    2   | time |

我对打印行进行传导

Where state=unread

现在输出是

= userid 1 send you 'hi'
= userid 1 send you 'hello'
= userid 2 send you 'hi'

但是我想这样输出

= userid 1 send you 'hello'
= userid 2 send you 'hi'

删除相同的 userid 行并只选择最后一个(使用 php 和 sqli)

最佳答案

试试这个:

SELECT a.id, a.state, a.msg, a.userid, a.time 
FROM tableA a 
INNER JOIN (SELECT a.userid, MAX(a.id) id 
            FROM tableA a 
            WHERE a.state = 'unread'
            GROUP BY a.userid
           ) AS b ON a.userid = b.userid AND a.id = b.id;

关于mysql - 关于 SQL 行过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27287228/

相关文章:

mysql - SQL 查询在加入时显示特定用户的文档

javascript - 在不使用 onchange 属性的情况下获取选定值

mysql - Win8.1无法安装DBD-mysql

mysql - 如何获取 Mysql INSERT 以向 pthread 互斥体发出信号

php - 如何插入多行,每行都有一个数组?

sql - 获取相关表中每行的前 5 行

php - 如何查询 Cookie 变量

javascript - Node 从 req.params.id 结果中取出数组

php - 我尝试从同一数据库的 4 个不同表中获取信息

mysql - 如何使用 ORDER BY RAND() 将同一张表与自身连接起来?