我遇到了麻烦。 我有一个包含以下列的mysql表:
这个表有比图中显示的更多,但我只需要从图片中显示的数据中获取数据。
列包含标记词,经常重复。 我需要抓取一个包含Tags的单个数组,而不是获取重复的条目,而是获得所有唯一的条目。
我该怎么做? 为此目的最好的查询是什么?
另外,如果可能的话,我想计算这个标签出现在桌子上的次数。
我打算在PHP while()循环中显示数据,如下所示:
TagA(#videos)
TagB(#videos)
[...]
答案 0 :(得分:1)
您不应该将标签存储在不同的列中。相反,它们应该放在每个视频和每个标签上有一行的表中。
鉴于此结构,您可以使用union all
:
select tag, count(*)
from (select tag1 as tag from t union all
select tag2 as tag from t union all
select tag3 as tag from t union all
select tag4 as tag from t union all
select tag5 as tag from t
) t
group by tag;
答案 1 :(得分:0)
如果我正确理解了您的问题,那么任何列中的所有标记词都会被平等对待,因此每个标记字段的所有计数的联合都应该有效。
select tag, sum(tagCount) as tagCount from
(select tag1 as tag, count(*) as tagCount from yourTable GROUP BY tag1
UNION
select tag2 as tag, count(*) as tagCount from yourTable GROUP BY tag2
UNION
select tag3 as tag, count(*) as tagCount from yourTable GROUP BY tag3
UNION
select tag4 as tag, count(*) as tagCount from yourTable GROUP BY tag4
UNION
select tag5 as tag, count(*) as tagCount from yourTable GROUP BY tag5)
GROUP BY tag
警告:我面前没有数据库连接可以立即尝试。