Mysql执行数据透视表查询

Posted

技术标签:

【中文标题】Mysql执行数据透视表查询【英文标题】:Mysql execute pivot table query 【发布时间】:2020-11-03 22:49:19 【问题描述】:

我已经创建了 sql fiddle http://sqlfiddle.com/#!9/0586e8/1

我有一个名为 products,tags,product_tags 的表。我想检索所有已搜索标签的产品标签

例如,如果我搜索Mi tag,那么它应该返回带有标签Mi Tag的产品中的所有标签

【问题讨论】:

到目前为止您尝试过什么?你堆在哪里? @Iria.please 参考 sqlfiddle.i 已经写了查询,但它只会返回一个标签。而不是其他标签形式的产品 【参考方案1】:

您可以使用exists 来查找匹配项:

SELECT DISTINCT t.tag_name
FROM product_tags pt JOIN
     tags t
     ON pt.tag_id = t.id 
WHERE EXISTS (SELECT 1
              FROM product_tags pt2 JOIN
                   tags t2
                   ON pt2.tag_id = t2.id
              WHERE pt2.product_id = pt.product_id AND
                    t2.tag_name = 'Mi'
             );

这就是说:把相应产品标签为“MI”的所有标签都给我。

Here 是一个 SQL Fiddle。

【讨论】:

以上是关于Mysql执行数据透视表查询的主要内容,如果未能解决你的问题,请参考以下文章

具有动态列的 MySQL 数据透视表查询

使用 access 和 mysql 时,有没有办法查看哪些查询用于生成数据透视表? [复制]

MYSQL数据表名称修改

如何使用codeigniter显示mysql数据透视表数据

MySQL——case when 的用法,纵向统计数据-类似数据透视表

MySQL——case when 的用法,纵向统计数据-类似数据透视表