我有一个表,其中包含用户之间的消息列表。表结构:
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/