【问题标题】:How to find something that does not exist in another table?如何找到另一个表中不存在的东西?
【发布时间】:2012-11-28 23:22:50
【问题描述】:

我在这里迫切需要一些帮助。

我的问题是:我的数据库中有两个表,tblSubmissiontblStudenttblStudent 通过 student_id 键与 tblSubmission 链接。 tblStudent 中的某些行已被删除,因此与tblSubmission 中的行取消链接。

我需要做的是比较这两个表,并找到存在于tblSubmission 中但不在tblStudent 中的student_id,但来自tblSubmission 的结果必须有一列其中@ 987654332@ 等于 358。

手动检查这些行不是一种选择,因为它们有数千个。我已经尝试了很多查询,使用了我知道的最多的 SQL 和 NOT EXISTS 和 NOT IN 等子句,但无济于事。

【问题讨论】:

    标签: mysql sql database phpmyadmin primary-key


    【解决方案1】:

    这将显示 tblSubmission 中所有在 tblStudent 中没有相关记录的记录:

    SELECT tblSubmission.*
    FROM tblSubmission left join tblStudent on tblSubmission.student_id = tblStudent.student_id
    WHERE tblStudent.student_id is null
          AND app_id = 358
    

    也可以:

    SELECT tblSubmission.*
    FROM tblSubmission
    WHERE student_id not in (select student_id from tblStudent)
          AND app_id = 358
    

    【讨论】:

    • 这些查询效果很好,但我可以进一步将它们限制在 tblSubmission 中的 app_id 等于 358 的位置吗?感谢您迄今为止的帮助!
    • @user1631077 是的,我正在更新我的答案...现在应该没问题了!
    • 我确定您的查询没问题,但由于某种原因,他们现在没有返回任何内容,但是具有这些 student_id 的应用程序确实存在(我的老板仍然可以看到它们)。有什么建议么?我们基本上是在尝试找到 student_id,这样我们就可以在 tblStudent 中重新创建行,如果这有意义的话。
    • 如果您没有收到任何记录,那是因为您没有任何没有学生的提交。从你的老板那里得到一个提交 ID,在表格中找到学生 ID,并检查该 ID 的学生记录。
    • @user1631077 查询应该没问题...如果他们没有返回任何内容,那是因为所有 app_id=358 的记录都正确关联。你有一些被删除的ID吗?如果你有,你可以检查两张桌子,但我认为问题出在其他地方......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2011-06-19
    相关资源
    最近更新 更多