针对另一个表的随机 MySQL 查询验证

Posted

技术标签:

【中文标题】针对另一个表的随机 MySQL 查询验证【英文标题】:Randomised MySQL Query Validation against another table 【发布时间】:2020-11-17 23:49:57 【问题描述】:

我有 3 张桌子:

    “用户”列表 (uID) “问题”列表 (qID) “questionsanswered”表存储哪些问题已发送给哪些用户(qaUID 和 qaQID)

我需要做一个随机查询,我选择一个随机问题和一个随机用户,但不允许选择以前提出的问题,因此它需要根据 questionsanswered 表进行验证。

你能帮忙吗?

【问题讨论】:

【参考方案1】:

您可以cross joinusersquestions 表,并使用not exists 过滤掉questionsanswered 中存在的元组。那么剩下要做的就是随机选择一行。

select u.uid, q.qid
from users u
cross join questions q 
where not exists (
    select 1 
    from questionsanswered qa 
    where qa.qauid = u.uid and quqid = q.quid
)
order by rand()
limit 1

【讨论】:

以上是关于针对另一个表的随机 MySQL 查询验证的主要内容,如果未能解决你的问题,请参考以下文章

mysql主表查询的where 条件怎么写查询另一个表的数据?

MySQL查询基于另一个表的条件

我可以有来自另一个表的查询变量吗? mysql

如果表不存在,如何运行包含针对另一个 sql 实例上的表的查询的 If-Then-Else 语句?

将一个表的查询结果插入到另一个表中(oracle、mysql、sql 、GP)

mysql 查询一个表中没有存在在另一个表的数据