Php 使用GROUPBY子句对两列数据进行分组

Php 使用GROUPBY子句对两列数据进行分组,php,mysql,sql,phpmyadmin,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作为member

我希望查询只显示一个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我只需要一次

请帮帮我


提前谢谢。

试试这个,虽然我不是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
我只是想知道你为什么要返回select*,&你怎么没有得到任何错误。
我只是按照您的代码添加了一些条件。

使用括号对筛选选项进行分组/排序

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子句,因为您的select没有聚合函数。

您在$FRENCE中缺少下划线和senderid。我认为,由于您按2列进行分组,因此无法获得所需的结果。请查看我更新的ans。