我正在尝试获取与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实现这个,如果是,那么如何,如果不是那么为什么不呢?
任何帮助都将不胜感激。
由于
答案 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
条件,但从性能的角度来看,这实际上是无效的。