作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 MySQL 数据库中有这个:
table Message
sender_id int
recipient_id int
created datetime
[title, body, etc... omitted]
是否有可能在单个查询中从中获取与 ID 为 N 的给定用户通信的所有用户的列表(意味着 N 出现在 sender_id
或 recipient_id
),按 created
排序,包括 created
的最新值,无重复(无发送者/接收者对 N、M 和 M、N) ?
我很确定答案是否定的,但我很难说服自己。下午精神沉闷。
如果否,您会推荐什么最有效的替代方案?
编辑:天哪,Stack Overflow 这些天都在跳来跳去。在我意识到之前的 8 个答案我忘记指定我希望 created
的最新值与每行中的其他用户 ID 一起出现。
最佳答案
试试这个
SELECT distinct recipient_id
FROM Message
WHERE sender_id = @id
UNION
SELECT distinct sender_id
FROM Message
WHERE recipient_id = @id
union 子句将删除两个查询中的重复项。实际上看它你不需要 distinct,因为 union 也会为你做这件事(有人知道使用 distinct 预过滤子句或让 union 处理所有重复是否更有效吗?)
关于sql - 与 SQL 搏斗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1703674/
我在 MySQL 数据库中有这个: table Message sender_id int recipient_id int created datetime [tit
我是一名优秀的程序员,十分优秀!