对于我的搜索索引,我需要创建一个 sql 来获取薮表结果。
例如,我有以下表格;
- 标签(在这张表中我得到了所有的标签)
- video_tags(在此表中,我得到与标签 id 相关的 video_id)
- 视频(所有视频)
当我想获得带有标签的电影时,我使用以下查询;
SELECT
videos.id,
videos.id AS video_id,
videos.video_title AS video_title,
Group_Concat(DISTINCT t.tag_name SEPARATOR '|') AS tag_names
FROM videos
JOIN video_tags AS vt ON vt.video_id = videos.id
JOIN tags AS t ON t.tag_id = vt.tag_id
WHERE videos.id = '10'
这对我来说很完美。
现在我需要通过这样的方式从表中获取所有结果;
SELECT
videos.id,
videos.id AS video_id,
videos.video_title AS video_title,
Group_Concat(DISTINCT t.tag_name SEPARATOR '|') AS tag_names
FROM videos
JOIN video_tags AS vt ON vt.video_id = videos.id
JOIN tags AS t ON t.tag_id = vt.tag_id
WHERE videos.id <=( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
我在这里面临的问题是我如何使用 group_concat 函数。它将所有行组合成一行(我能理解)。我的问题是,如何使用 group_concat 函数将所有标记结果放入单个字段但 PER 行。
例如现在的结果
id | video_id | video_title | tag_names
1 1 title of id1 all tag_names from tags
我想要的是
id | video_id | video_title | tag_names
1 1 title of id1 tags fort this row
2 2 title of id2 tags fort this row