繁体   English   中英

MySQLi:选择所有不在用户登录好友数组中的用户

[英]MySQLi: SELECT all users that are NOT in the user logged in friend array

我正在尝试从当前用户 (userLoggedIn) 好友数组中未被识别为好友的 dB 中随机选择用户。 我在朋友数组中有用户,如下所示:

,edith_copecky,eddie_sasnchez,jay_beagle,red_one, 

当我打电话只提取那些朋友时,我使用以下内容:

$query = mysqli_query($con,"SELECT * FROM users WHERE friend_array LIKE '$username,%' OR friend_array LIKE '%,$username,%' OR friend_array LIKE '%,$username' LIMIT 0,8");

但现在我想做相反的事情,让它们随机显示,但我不确定如何。

$not_friend_query = mysqli_query($con,"SELECT * FROM users WHERE username ......???? ORDER BY RAND() LIMIT 0,5");

我对此很陌生,所以请放轻松:) 我只是不确定如何从查询结果中过滤掉那些已经是 userLoggedIn 朋友的成员。

要查找不在当前用户的friend_array中的所有用户,您需要自加入。 您需要使用LEFT JOIN - NULL模式来查找匹配的用户。

使用FIND_IN_SET将名称与逗号分隔的列表匹配,而不是您复杂的LIKE模式集。

SELECT u1.username
FROM users AS u1
LEFT JOIN users AS u2 ON FIND_IN_SET(u1.username, u2.friend_array) AND u2.username = '$userLoggedIn'
WHERE u2.username IS NULL
AND u1.username != '$userLoggedIn' -- exclude user themselves

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM