SQL查询选择不同的值

时间:2011-02-21 17:25:09

标签: sql distinct

我有一个表格 tbl_mail ,结构如下:

tbl_mail
____________
mail_from_user_id
mail_to_user_id

我想找到与我曾经交谈的所有人。我可以给他们写信或者写信给我,我需要知道对手的身份证号码。假设我有1号身份。

tbl_mail
___________
mail_from_user_id | mail_to_user_id
------------------------------------
1                 | 2
1                 | 3
4                 | 1

在上面的例子中,我写信给2个不同的人(id`s - 2& 3),另一个人写信给我(4号)。 我怎样才能找到我与之互动的所有人(除了我自己)。

3 个答案:

答案 0 :(得分:2)

使用:

SELECT a.mail_from_user_id AS user
  FROM TBL_MAIL a
 WHERE a.mail_to_user_id = 1
UNION 
SELECT b.mail_to_user_id AS user
  FROM TBL_MAIL b
 WHERE b.mail_from_user_id = 1

UNION将删除重复项。 UNION ALL不会,并且会更快。

答案 1 :(得分:0)

select mail_to_user_id as mailid from tbl_mail where mail_from_user_id=1
     union 
    select mail_from_user_id as mailid from tbl_mail where mail_to_user_id=1

其中1是你的身份证。将其替换为所需的ID。

答案 2 :(得分:0)

快速入侵:

从中选择idx (从mail_from_user_id中选择mail_from_user_id作为idx,其中mail_to_user_id = 1 group by mail_from_user_id 联盟 从tbl_mail中选择mail_to_user_id作为idx,其中mail_from_user_id = 1 group by mail_to_user_id) 按idx分组