MySQL从一组中提取相似数据

标签 mysql group-by aggregate-functions

这是我正在编写的应用程序的消息模块中的剥离表。

当我运行以下命令时,它按预期运行

SELECT * FROM messages WHERE to_user = 1 OR from_user = 1 GROUP BY from_user

返回

戏剧性的是我只想拥有 2 | 的一个实例1 或 1 | 2 ,因为在我的应用程序中,我试图根据发送消息的用户名对消息进行分组。我尝试不使用 OR 子句,但是当 1 向 2 发送消息时,消息不会出现,直到他收到 2 的回复。 1 和 2 是来自 php 变量的动态

最佳答案

由于您按用户名分组,我会选择一个有效的用户 ID 列表:

SELECT DISTINCT from_user FROM messages WHERE to_user = 1 
UNION
SELECT DISTINCT to_user FROM messages WHERE from_user = 1 

如果您不介意重复,UNION ALL 并删除 DISTINCT 将提高性能。

关于MySQL从一组中提取相似数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12431949/

相关文章:

php - 更新特定列等于其他表

php - 我网站上的搜索模块出现问题

sql - 我怎样才能使这个查询更好?

sql - 在 SQL 中使用窗口函数运行总计 "matches"

php - 有没有办法将各种 MYSQL 查询与多个 WHERE 子句结合起来?

基于聚合函数的SQL返回

java.sql.SQLException : Invalid value for getShort() - ' '

mysql - Mondrian - XML 形式的事实表数据

mysql - 在 SQL 中显示每个用户的最后一个值(快速)

mysql - 每个部门有多少雇主?