从邮件数据库构建对话框列表

时间:2013-07-17 23:21:23

标签: mysql sql

说明 我有一个私人消息用户数据库。方案:

Database scheme

我的任务只对感兴趣的专栏owner_user_idviewer_user_id感兴趣。 查询SELECT owner_user_id, viewer_user_id FROM mail的结果大致为:

Result http://screencloud.net//img/screenshots/6dae938eab89faab8f69e683403b1eb2.png

问题

我需要获取唯一对话的列表。 也就是说,从这个列表(* 1),我必须得到这样的东西(* 2)。 尽管事实上,当你构建一个查询时,我不知道任何一个人的身份。

* 1 Some list http://screencloud.net//img/screenshots/1ad2ddeb5afa0d3b97985ab65adaef3f.png

* 2 http://screencloud.net//img/screenshots/1d75c3ee60e73f9874a836b738013c5a.png

问题

我是怎么做到的?

我希望我能正确地提出这个问题。

3 个答案:

答案 0 :(得分:0)

看起来你想要这个:

SELECT DISTINCT owner_user_id, viewer_user_id FROM mail

将为您提供包含这两列的独特列表

答案 1 :(得分:0)

你可以使用杰夫的回答(不同)但需要“命令”元组,以便将你所谓的对话单义化。

e.g。

SELECT distinct
if(owner_user_id>viewer_user_id,owner_user_id,viewer_user_id), 
if(viewer_user_id>owner_user_id,viewer_user_id,owner_user_id)
FROM mail

RGDS [R

答案 2 :(得分:0)

找到解决方案!

SELECT DISTINCT 
  LEAST(
    `owner_user_id`,
    `viewer_user_id`
  ) AS first_user,
  GREATEST(
    `owner_user_id`,
    `viewer_user_id`
  ) AS second_user
FROM
  `mail`