在 MySQL 中,我有一个产品表与一个不同的类别表相关联。
我经常通过对结果进行 LEFT JOIN 和 GROUPING 来显示列表:
例如 LEFT JOIN 给我:
Name | Category
----------------
Cool cap | clothes
Cool cap | hats
然后按 ID 分组给了我 1 个结果。
问题:如何显示带有 的产品列表category='clothes' AND category='hats'
?因为该项目不会显示,因为每个类别都显示在新行上。
你可能需要做这样的事情:
为了准确地检查某个列表:
(在 之后不能超过 2 个
GROUP BY
;这确认两者都包括在内。)将检查这 3 个中的任何 2 个(或全部 3 个)。
使用 GROUP_CONCAT 使它们成为同一行并可搜索。
假设您有一个三向表。有产品、类别和链接表。首先将所有产品及其类别显示为一张表:
结果:
然后让我们用 GROUP_CONCAT 使类别 1 行:
然后表格将如下所示:
但是,您不能使用 WHERE来搜索 group_concat!您需要使用“HAVING”在 group_concat 中搜索:
此查询只会向我们显示具有这两个类别的产品。并且不会显示仅具有任一类别的产品。