MySql SELECT DISTINCT两列相同的表

时间:2016-04-08 20:25:49

标签: mysql

我正在尝试获取与ID 51平行的其他人的ID(外键)。

ID | name   | sender_id | reciever_id | time
1  | hjhjnk | 51        | 2           | SOMETIME
2  | hjhjnk | 2         | 51          | SOMETIME
3  | hjhjnk | 51        | 2           | SOMETIME
4  | hjhjnk | 51        | 2           | SOMETIME
5  | hjhjnk | 51        | 3           | SOMETIME
6  | hjhjnk | 6         | 51          | SOMETIME
7  | hjhjnk | 55        | 2           | SOMETIME

目前我必须使用两次查询。

SELECT DISTINCT `reciever_id` FROM `message` WHERE `sender_id` LIKE 51
SELECT DISTINCT `sender_id` FROM `message` WHERE `reciever_id` LIKE 51

所以我可以有2,3和6。 我可以单个Query实现这个,如果是,那么如何,如果不是那么为什么不呢?

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

将它们组合成单个查询的最简单方法是使用union:

SELECT DISTINCT `reciever_id` FROM `message` WHERE `sender_id` =51
Union
SELECT DISTINCT `sender_id` FROM `message` WHERE `reciever_id` =51

您可以在选择列表中使用条件表达式,也可以在where子句中使用or条件,但从性能的角度来看,这实际上是无效的。