gpt4 book ai didi

mysql - 检查重复行尚不存在

转载 作者:行者123 更新时间:2023-11-29 13:32:44 27 4
gpt4 key购买 nike

表格:

exp_submissions
-----------------------------------------------------------------------------------
id | entry_id | member_id | member_group | category_id | type_id | portfolio_number
exp_judging
------------------------------------------------
id | rel_id | judge_id | pre | stage_1 | stage_2

目标:

  • exp_judging.rel_idexp_submissions.id 上的两个表连接在一起
  • 仅选择满足以下条件的行:
    • exp_submissions.member_group = 5exp_judging.pre = 1
    • judge_id != 1,或judge_id IS NULL
    • 不存在具有相同 rel_idjudge_id = 1 的行。

以下查询执行最后一部分之前的所有操作:

SELECT sub.entry_id 
FROM exp_judging AS jud
LEFT JOIN exp_submissions AS sub ON jud.rel_id = sub.id
WHERE (jud.judge_id != 1 OR jud.judge_id IS NULL)
AND jud.pre = 1
AND sub.member_group = 5
LIMIT 1

这些是我的 exp_judging 表中的测试行:

enter image description here

正如您将看到的,有两行的 rel_id = 35(ID 200 和 197)。上述查询选择了行 id 197,即使还有另一行具有相同的 rel_id 且具有 judge_id = 1。这是我的问题。

我需要添加到我的查询中,以检查是否存在具有相同 rel_idjudge_id = 1 的其他行,但我不知道如何操作。

谢谢。

最佳答案

您应该使用NOT EXISTS子句:

   SELECT sub.entry_id 
FROM exp_judging AS jud
LEFT JOIN exp_submissions AS sub ON jud.rel_id = sub.id
WHERE (jud.judge_id != 1 OR jud.judge_id IS NULL)
AND jud.pre = 1
AND sub.member_group = 5
AND NOT EXISTS (SELECT sub2.entry_id
FROM exp_judging AS jud2
LEFT JOIN exp_submissions AS sub2 ON jud2.rel_id = sub2.id
WHERE (jud2.judge_id = 1 )
AND jud2.pre = 1
AND sub2.member_group = 5
AND jud2.rel_id = jud.rel_id)
LIMIT 1

编辑:添加新条件

关于mysql - 检查重复行尚不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19175886/

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