我在尝试创建SQL语句时遇到了一些麻烦,我认为这里有人可能会帮助我。
我有两张桌子:匹配和用户。 Matches表由User_id和Partner_id组成,代表用户及其各自的匹配(伙伴)。 每次用户单击按钮时,都会找到一个新匹配,并在匹配表中创建一行。
现在,当用户点击按钮查找匹配项时,我需要 - 随机 - 在“用户”表中找到一个用户本身(显然)并且与当前用户没有关系匹配表。 - 这就是我被卡住的地方。
如何通过匹配表根据与当前登录用户没有关系的标准选择用户?
非常感谢所有答案。谢谢。
编辑:阅读了SQL - find records from one table which don't exist in another和Sql select row if no row exists in other table(以及其他人),之后只让我更加困惑。 - 我根本没有完全理解给出的答案,这些答案足以将它们转换成我的案例中有用的答案。
答案 0 :(得分:1)
select
user_id
from
users u
where
user_id<>$own_id
and not exists (
select * from matches m
where
m.user_id=u.user_id
or m.partner_id=u.user_id
)
order by rand()
limit 1
虽然注意order by rand()
不是最有效的解决方案。阅读更多here并考虑一些替代方案。