我正在编写一个友谊系统,它有两个表。
members
friends
假设我想要一个可以选择成员 $userId 的朋友 ID 的查询,如何在一个查询中实现这一点?
我找到了一个解决方案,即进行两次查询。拳头选择好友WHEREuser_id = $userId
第二个选择朋友 WHEREfriend_id = $userId
然后将它们混合在一个数组中。如果没有其他解决方案,我将使用它。
请问对 SQL 结构和查询有什么想法吗?
Use:
SELECT f.friend_id
FROM FRIENDS f
WHERE f.user_id = $user_id
UNION
SELECT t.user_id
FROM FRIENDS t
WHERE t.friend_id = $user_id
Using UNION
将删除重复项。UNION ALL
会更快,但它不会删除重复项。
如果您想为朋友们获取信息MEMBERS
表,使用:
SELECT m.*
FROM MEMBERS m
JOIN (SELECT f.friend_id 'user_id'
FROM FRIENDS f
WHERE f.user_id = $user_id
UNION
SELECT t.user_id
FROM FRIENDS t
WHERE t.friend_id = $user_id) x ON x.user_id = m.id
BTW: I hope you're using mysql_escape_string http://php.net/manual/en/function.mysql-escape-string.php on the variables, otherwise you risk SQL injection attacks:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)