大家好我在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
答案 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。