PHP MYSQL - 将多个列区分开来

时间:2016-04-04 19:16:21

标签: php mysql

我已经阅读了很多与此主题相关的问题和答案,但我找不到任何对我有用的东西,所以我真的可以使用一些帮助。

我正在尝试为我的网站制作一个简单的私人消息系统。我有一张这样的桌子:

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,但我该怎么做呢?

我知道这些问题听起来很模糊,但我真的无法解释它。提前谢谢!

1 个答案:

答案 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