我有以下问题。一个视频有多个标签,如高清,720p,1080p等,每个标签都有自己的记录。所有标签都在自己的表中,其命名标签。
以下是示例表格标记。
CREATE TABLE IF NOT EXISTS `tag` (
`video_tag_id` bigint(20) NOT NULL AUTO_INCREMENT,
`video_id` bigint(20) DEFAULT NULL,
`tag_name` varchar(300) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`tag_count` bigint(20) DEFAULT NULL,
PRIMARY KEY (`video_tag_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
因此,当我使用其他表中的类似搜索时,它会向我显示每个标记相同的视频。
我怎么能做到这一点?
答案 0 :(得分:1)
我们假设您指的是 table ,您可以参考数据库。
您需要将正确的表格结构替换为视频表格:
SELECT
videos.video_id,
videos.name,
tag.tag_name
FROM videos JOIN tag ON videos.video_id = tag.video_id
WHERE videos.name LIKE '%the name of your video%'
以上将为视频的每个标记列出一行。
要在一行中返回标记列表,请使用GROUP_CONCAT()
:
SELECT
videos.video_id,
videos.name,
GROUP_CONCAT(tag.tag_name) AS tags
FROM videos JOIN tag ON videos.video_id = tag.video_id
WHERE videos.name LIKE '%the name of your video%'
GROUP BY videos.video_id, videos.video_name