2016-08-15 33 views
0

如何创建一个查询分组谁已经从用户1GROUP_CONCAT进行分组多行的用户

SQL发送或接收邮件的用户: http://sqlfiddle.com/#!9/7d6a9为usr_msg
http://sqlfiddle.com/#!9/3ac0f为token_msg。

我有2个表:token_msgsuser_msgs

Image of my tables:

我想告诉用户ID列表(非repeting,喜欢的用户2,3和4应该是可见的只有一次,但在DESC命令)谁发送/接收到来自user1的消息[from_id = 1或to_id = 1]。我无法创建GROUP_CONCAT的逻辑,也不确定是否真的需要加入这两个表。

enter image description here

谢谢。

+0

什么是您预期的输出?一个列表?一组行?这不清楚。请编辑提供此信息的问题。我不认为你需要'GROUP_CONCAT'。 –

+0

@KamilG。添加图像来说明我的预期输出。 – Somename

回答

0

假设你有一个用户列表,你可以使用INEXISTS

select u.* 
from users u 
where u.id in (select from_id from user_msgs where to_id = 1) or 
     u.id in (select to_id from user_msgs where from_id = 1) or 
     u.id in (select from_id from token_msgs where to_id = 1) or 
     u.id in (select to_id from token_msgs where from_id = 1); 
+0

但是,这是返回所有的值..我怎么能限制一次1对话? – Somename