将2列与其他列组合为1

时间:2016-09-10 11:47:01

标签: php sql mysqli

我有这张桌子

myid             his_id

  7                1

  1                7

  1                6

  1                3

但它给了我4条记录而不是3条记录,我尝试使用mysqli"加入" ," group by"但没有工作。

我正在尝试使用纯php和jquery开发一个聊天系统,在上面的d表中,用户7与用户1聊天,用户1与用户7聊天,所以我希望将其视为同一个聊天和其余的2(用户1与用户6聊天,用户1与用户3聊天)

我希望它只给我3条记录而不是4条记录,请给予任何帮助,谢谢,

抱歉我没有连接到我的系统,即时通讯使用智能手机,请原谅我在下面的格式错误的查询

$sql = mysqli_query($connectn, "select a.id, b.his_id, a.myid, a.status, a.date_replied FROM chats a JOIN chats b ON b.myid=b.myid WHERE b.his_id='$regestered_id' or b.myid='$regestered_id' GROUP BY b.his_id ORDER BY a.id DESC") ;

1 个答案:

答案 0 :(得分:0)

如果你想要myid和his_id的不同组合,你不能打印id,date_replied,status等,而只是两列 - his_id,myid。
因为如果有多个行,其中两列具有相同的值,则决定必须选择哪一行才能打印ID,状态等是另一行。 因此,只需打印两个用户正在聊天,请使用myid和his_id。您可以稍后将它们用于任何其他信息 现在,您想要的代码是 -

$sql = mysqli_query($connectn, "select distinct 
least(myid, his_id), greatest(myid, his_id) 
from chats");

是的,就像@iblamefish提到的那样,不要忘记保护你的代码免受SQL注入。