mysql - 从 MYSQL 中的两列中选择不同的数据

标签 mysql select multiple-columns

我有一个表,其中包含用户之间的消息列表。表结构:

Receiver | Sender | Subject   | Message

Daniel   | Admin  | Title 1   | Message 1
Admin    | Daniel | Title 2   | Message 2
Daniel   | Admin  | Title 3   | Message 3
Daniel   | John   | Title 4   | Message 4

假设我以 Daniel 身份登录。我想显示与我通信的人员列表(无论我是发送者还是接收者),以及最新的主题/消息。像这样的东西:

Admin | Title 3 | Message 3
John  | Title 4 | Message 4

我已经尝试了上百万种方法来做到这一点,但我就是摸不着头脑!

如果有人可以帮助我区分我是发送者和我是接收者的最新消息(例如,某种 if 语句),那也会很有帮助。不过,我自己还没有尝试过,所以这不是一个紧迫的问题。

任何帮助将不胜感激:)

最佳答案

要获得您指定的输出....

SELECT i.correspondent, m.subject, i.msg
FROM (
SELECT sender AS correspondent, MAX(message) msg
FROM mesages
WHERE receiver='Daniel'
GROUP BY sender
UNION
SELECT receiver AS correspondent, MAX(message)
FROM mesages
WHERE sender='Daniel'
GROUP BY receiver )i,
messages m
WHERE i.msg=m.message;

但是还有很多其他方法可以获取通讯员列表。

关于mysql - 从 MYSQL 中的两列中选择不同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13929677/

相关文章:

MySQL varchar大小存储——一字节、二字节转换

mysql - 如何使用带有测试数据的自定义 mysql docker 镜像进行本地开发

mysql - 多个简单连接 Vs。多个简单选择

Sqlite 连接表并选择列包含的位置

Python:元组/字典作为键、选择、排序

sql - 使用按日期分组的 sql 查询

html - 如何将 css 列垂直对齐到底部?

html - 响应式堆叠列问题

php - 在其他表的多行中选择符合条件的行

r - 如何使用 data.table 根据条件计算列总和?