我有一张具有这种结构的表:
所有整数。该表模拟了两个用户之间的友谊。
我想做的就是找到只存在于一个方向的记录。
例如: 当没有t2.s_id = 15和t2.u_id = t1.s_id的记录时,我想找到t1.u_id = 15的记录数。
因此,两个ID之间的关系只存在一次。
在我看来,我已经设法用子查询编写了正确的查询,但后来我开始使用左连接重写查询来提高速度,现在......好吧它没有用。
我现在的查询是:
SELECT * FROM `friends` AS f1 LEFT JOIN `friends` AS f2
ON f1.user_id = f2.friend_id
WHERE f1.friend_id=15 AND f2.user_id IS NULL
但它不起作用。请帮忙。
NB。我正在使用mysql 5,所以我不能使用EXCEPT语句和所有其他好东西。
答案 0 :(得分:1)
这个怎么样?
SELECT *
FROM `friends` AS f1
LEFT JOIN `friends` AS f2 ON f1.user_id = f2.friend_id AND f1.friend_id = f2.user_id
WHERE f1.friend_id=15
AND f2.user_id IS NULL
答案 1 :(得分:0)
这一个?
SELECT * FROM friends
f1
LEFT JOIN friends
f2 ON f1.user_id = f2.friend_id
WHERE f1.friend_id = 15 AND f2.user_id IS NULL