gpt4 book ai didi

MySQL AND 与 OR 条件

转载 作者:太空宇宙 更新时间:2023-11-03 10:56:57 25 4
gpt4 key购买 nike

我正在尝试从满足子表条件的主表中获取集合。我正在尝试的是:

SELECT main_table.* 
FROM main_table
LEFT OUTER JOIN category_available ON main_table.id = category_available.main_table_id
WHERE category_available.category_id = 206 AND category_available.category_id = 207;

我没有得到任何结果,即使主表包含一行,其中的条目满足子表中的 AND 条件。如果我将 AND 替换为 OR,我会得到预期的结果,但查询需要满足 AND 条件。

category_available 是一个子表。它包含许多可以绑定(bind)到单个主表行的行。因此它可能包含两行包含 main_table id,一个 id 为 206,另一行 id 为 207。所以我需要返回满足这两个条件的 main_table 行。

最佳答案

您可以根据main_table 的PK 对记录进行分组,然后相应地过滤相应的组:

SELECT   m.* 
FROM main_table m JOIN category_available c ON c.main_table_id = m.id
WHERE c.category_id IN (206, 207)
GROUP BY m.id
HAVING COUNT(DISTINCT c.category_id) = 2

如果 category_available 表保证了 (main_table_id, category_id) 的唯一性,则可以通过使用 避免代价高昂的 DISTINCT 操作COUNT(*) = 2 代替。

关于MySQL AND 与 OR 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19670612/

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