我已经阅读了很多与此主题相关的问题和答案,但我找不到任何对我有用的东西,所以我真的可以使用一些帮助。
我正在尝试为我的网站制作一个简单的私人消息系统。我有一张这样的桌子:
private messages: id, to_id, from_id, message, time_sent
我现在正试图在我的页面上显示一个列表,其中包含与成员交互的不同用户,例如Facebook消息,因此每个名称在列表中只出现一次。
这就是我现在所看到的,它向我展示了作为用户($ my_id)参与的每条消息:
SELECT * FROM private_messages WHERE (from_id = '$Sid' AND to_id = '$my_id') OR (from_id = '$my_id' AND to_id = '$Sid') ORDER BY time_sent ASC
此查询显示了一个不同的列表,但仅显示了我收到消息的人员:
SELECT DISTINCT(from_id) FROM private_messages WHERE to_id='$my_id' ORDER BY time_sent DESC
我应该如何重写这一点,以便为我提供一个与我交互过的每个用户的清晰列表(如facebook消息列表)?我想我需要区分两列,from_id和to_id,但我该怎么做呢?
我知道这些问题听起来很模糊,但我真的无法解释它。提前谢谢!
答案 0 :(得分:3)
试试这个:
SELECT DISTINCT IF(from_id = '$my_id', to_id, from_id) AS other_id
FROM private_messages
WHERE '$my_id' IN (to_id, from_id)
ORDER BY time_sent DESC