gpt4 book ai didi

mysql - 如何查找与第二个表有多重关系的记录

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:04 25 4
gpt4 key购买 nike

table products
--------------
id | title
1 | Product 1
2 | Product 2
3 | Product 3

table categories
----------------
id | title
1 | Cat 1
2 | Cat 2
3 | Cat 3

table products_categories_mm
----------------
id_local | id_foriegn
1 | 2
1 | 3
2 | 3
3 | 2

SELECT * 
FROM products
JOIN products_categories_mm ON products.uid=products_categories_mm.uid_local
JOIN categories ON products_categories_mm.uid_foreign = categories.uid
WHERE products.lang_uid IN (0)
AND products.page >= 1
AND products.page IN (8,9,10,11)
AND categories.uid IN (2,3)
ORDER BY products.datetime DESC

以上查找与类别 2 和 3 相关的所有产品。它返回产品记录 1、2 和 3。这很好,可以按我想要的方式工作。但现在我需要调整查询,使其返回与类别 2 和类别 3 相关的产品。

在这种情况下,查询应返回产品 1(因为它是唯一与两个类别相关的产品)。

我尝试将 SQL 更改为:

SELECT * 
FROM products
JOIN products_categories_mm ON products.uid=products_categories_mm.uid_local
JOIN categories ON products_categories_mm.uid_foreign = categories.uid
WHERE products.lang_uid IN (0)
AND products.page >= 1
AND products.page IN (8,9,10,11)
AND (categories.uid = 2 AND categories.uid = 3)
ORDER BY products.datetime DESC

但这没有任何返回。 EXPLAIN 表示存在不可能的 where 子句。

如何更改我的 SQL 以获得我想要的记录?

最佳答案

SQL 的解释是,因为 2 和 3 的 UID 将出现在不同的行中,所以不可能有一个 UID 既是 2 又是 3 的行。最好采用不同的方法。 .. 例如子查询。

关于mysql - 如何查找与第二个表有多重关系的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11041543/

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