使用group by子句对两个列数据进行分组

时间:2014-07-02 05:06:17

标签: php mysql sql phpmyadmin

我想查询只显示一个id

中的一个数据

我的查询是

SELECT *
FROM messages
WHERE sender_id='$memberid'
  AND reciver_id IN($frens)
  OR reciver_id='$memberid'
  AND senderid IN($frens)
GROUP BY sender_id,
         reciever_id
ORDER BY datetime DESC

此查询显示两列的单独值。

假设我有48个作为memberid并且它在两个列中都存在,它显示48次n我只想要它一次。

请帮帮我。

提前感谢。

2 个答案:

答案 0 :(得分:0)

试试这个,我不是PHP家伙。

SELECT *
FROM messages
WHERE (sender_id='$memberid' AND reciver_id IN($frens))
  OR (reciver_id='$memberid' AND sender_id IN($frenss))
GROUP BY sender_id
ORDER BY datetime DESC

我只是想知道为什么你有选择*,&你怎么没有得到任何错误。 我只是按照你的代码&条件附加()。

答案 1 :(得分:0)

使用括号对过滤器选项进行分组/优先排序。

SELECT *
FROM messages
WHERE (sender_id='$memberid'  <-- added an open parenthesis
 AND reciver_id IN($frens))  <-- added a close parentheis
 OR (reciver_id='$memberid'  <-- added an open parenthesis
 AND sender_id IN($frens))    <-- added a close parentheis    
ORDER BY datetime DESC

我删除了group by条款,因为你的选择没有聚合函数。