MYSQL查询与distinct和max

标签 mysql sql

我需要一个 mysql 查询,它将选择“to”或“from”列中包含“joe”的所有行。 “to”和“from”列之间需要不同,这意味着名称以什么顺序出现并不重要。即“joe”、“bob”应被视为与“bob”、“相同”乔”。如果一对名称中有重复,则选择具有最大 id 的名称。最终表也应该按 id 降序排序。例如,在下表上运行查询:

之前:

id  to    from     
---|-----|------
1  | joe | bob | 
2  | bob | hal |
3  | joe | joe |
4  | sue | joe |
5  | bob | bob |
6  | bob | joe |
7  | hal | hal |
8  | joe | bob |

之后:

id  to    from     
---|-----|------
8  | joe | bob | 
4  | sue | joe |
3  | joe | joe |

最佳答案

尝试使用 GROUP BY,按字母顺序(从、到)进行分组:

SELECT id, `from`, `to`
FROM yourtable
WHERE id IN
(
    SELECT MAX(id)
    FROM yourtable
    WHERE `from` = 'joe' OR `to` = 'joe'
    GROUP BY LEAST(`from`, `to`), GREATEST(`from`, `to`)
)
ORDER BY id DESC

查看它在线运行:sqlfiddle

关于MYSQL查询与distinct和max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11271234/

相关文章:

sql - 如何给未嵌套的元组数组起别名?

sql - 如何在 SQLite 上使用 CTE 进行更新/删除?

mysql - 是否可以在 1 个 sql select 中选择这些查询?

sql - 如何通过 HAVING 条件过滤原始行?

python - Alembic 自动生成不检测具有大小写混合名称的现有表

php - 使用php脚本将mysql数据输出到csv/txt文件

php - 在另一个表 PHP 中按列排序

sql - 查询未产生期望的结果

php foreach 仅使用动态数据循环一次

mysql - 连接表并在mysql中的两个不同表中搜索数据