gpt4 book ai didi

mysql - 如何在同一个表中查找相对于另一列的列?

转载 作者:行者123 更新时间:2023-11-29 03:03:58 26 4
gpt4 key购买 nike

我有下表

  • quizId 是数据库中测验的ID
  • userId 对应于使用相应 quizId 进行测验的用户

    quizId | userId 
    1 | 9
    1 | 10
    1 | 11
    2 | 11
    3 | 11
  • 现在,假设 userId 为 9。

  • 我需要一个只返回 quizId 的 2 和 3 的查询

  • 意思是,由于 quizId 1 已被 userId 9 占用,我不再需要它们。

思路是:

  • 在我制作的测验应用程序中,一个人只能参加一次测验。
  • 有一个页面,他可以在其中查看可用测验的列表。
  • 所以我只想显示他尚未参加的测验。
  • 上表是一个 quizLog 表,其中存储了参加该测验的 quizId 和 userId

对不起,但这是我能解释的最好方式。我希望有人能帮助理解和帮助我。而且我无法确定这是否是一个重复的问题,因为我不知道应该搜索哪些关键字。抱歉,如果这是重复的。

编辑:

  • 我有一个名为“quiz”的表,其中存储了测验的详细信息
  • 我有一个名为“users”的表,其中存储了用户详细信息
  • 上面的表格叫做'quizLog'

这是我现有的查询

    SELECT quiz.quizId,quiz.title
FROM quiz
JOIN quizlog
ON quiz.quizId = quizlog.quizId
WHERE condition

最佳答案

最容易理解的查询是:

select *
from quiz
where id not in (
select quiz_id
from user_quiz
where user_id = 9)

更高级的方法是:

select *
from quiz q
left join user_quiz uq
on uq.quiz_id = q.id
and uq.user_id = 9
where uq.user_id is null

join 版本可能在大多数数据库上表现更好。

关于mysql - 如何在同一个表中查找相对于另一列的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18692671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com