mysql php私信系统dupe行

时间:2016-04-27 02:09:40

标签: php mysql

大家好我在mysql中遇到问题我必须使用相同的变量(3)搜索两个user1和user2字段,我不会复制这两个字段

表名pm:

id    user1    user2    message    timestamp    user1read    user2read
1       3        4     edfdfdfdf      1            yes          no
2       3        5     ererererer     1            yes          no
3       5        3     gfffgfgdfdfd   1            yes          no
4       6        3     ewwwewewe      1            yes          no
5       7        3    ewwwewddfdfewe  1            yes          no
6       3        7    ewwwewddffewe   1            yes          no

我试过了

$q= mysqli_query("SELECT DISTINCT user1,user2 FROM pm WHERE (user1='3') or (user2='3') ") or die(mysql_error());

他打印:

user1 user2
3      4
3      5
5      3
6      3
7      3
3      7

我想打印

user1 user2
3      4
3      5
6      3
7      3

1 个答案:

答案 0 :(得分:0)

请试试这个查询。

SELECT user1,user2
FROM pm T1 
INNER JOIN 
  (SELECT MIN(id) as min_id,
         LEAST(user1,user2) as id1,
         GREATEST(user1,user2) as id2
  FROM pm
  WHERE user1 = 3
  OR user2 = 3
  GROUP BY id1,id2)T2
ON T1.id = T2.min_id
ORDER BY T1.id ASC

http://sqlfiddle.com/#!9/8fd88/1

查询的作用是使用子查询,它找到userid 3与较小用户ID和较大用户ID分组的其他人的最小ID。然后它与pm表连接回来抓取这些最小id的user1和user2 id。

您正在寻找的是用户ID 3与其他人之间的第一条消息的用户ID。