SQL - 如何根据用户是否存在于另一个表中来选择用户?

时间:2015-07-12 10:56:14

标签: mysql sql

我在尝试创建SQL语句时遇到了一些麻烦,我认为这里有人可能会帮助我。

我有两张桌子:匹配和用户。 Matches表由User_id和Partner_id组成,代表用户及其各自的匹配(伙伴)。 每次用户单击按钮时,都会找到一个新匹配,并在匹配表中创建一行。

现在,当用户点击按钮查找匹配项时,我需要 - 随机 - 在“用户”表中找到一个用户本身(显然)并且与当前用户没有关系匹配表。 - 这就是我被卡住的地方。

如何通过匹配表根据与当前登录用户没有关系的标准选择用户?

非常感谢所有答案。谢谢。

编辑:阅读了SQL - find records from one table which don't exist in anotherSql select row if no row exists in other table(以及其他人),之后只让我更加困惑。 - 我根本没有完全理解给出的答案,这些答案足以将它们转换成我的案例中有用的答案。

1 个答案:

答案 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并考虑一些替代方案。