【发布时间】:2013-01-06 00:22:16
【问题描述】:
我有以下表格:
user
+-----------------------------------------------+
| user_id | username | Password | ... |
+-----------------------------------------------+
| 1 | a | *** | ... |
+-----------------------------------------------+
| 2 | b | *** | ... |
+-----------------------------------------------+
| 3 | c | *** | ... |
+-----------------------------------------------+
| 4 | d | *** | ... |
+-----------------------------------------------+
| 5 | e | *** | ... |
+-----------------------------------------------+
friends
+-----------------------------------------------+
| f_id | user_id | friend_id | ... |
+-----------------------------------------------+
| 1 | 4 | 2 | ... |
+-----------------------------------------------+
| 2 | 4 | 1 | ... |
+-----------------------------------------------+
| 3 | 4 | 5 | ... |
+-----------------------------------------------+
| 4 | 4 | 3 | ... |
+-----------------------------------------------+
我想获取所有可以添加为好友的用户(在这种情况下,1 的 user_id 将有 3 个以上好友要添加 (2, 3, 5)。但是,通过使用以下 @987654325 @我只有1个用户(4)可以添加:
$sql = "SELECT * FROM user WHERE user.user_id NOT IN
(SELECT friends.friend_id FROM friends) AND
user.user_id <> $_SESSION['id']." ORDER BY RAND() LIMIT 5";
但是当我以用户 4 登录时,这很有效,没有可添加的用户。这对我来说有点棘手。任何想法将不胜感激。
谢谢
【问题讨论】:
-
您的嵌套查询中不需要
WHERE子句吗? -
我也试过了,还是不行。我试过
WHERE friends.friend_id <> $_SESSION['id']还是会是别的? -
否 -
WHERE friends.user_id = $_SESSION['id']- 您想找到 此用户 还不是朋友的人,对吗?所以你想说NOT IN说用户是朋友的人列表。 -
+1 @tepkenvannkorn 的问题,很有趣
标签: php mysql join not-exists notin