mysql - REGEX 通过子查询中的 GROUP_CONCAT 值集

标签 mysql phpmyadmin group-concat

我有一个可怕的问题,

已删除

现在,当用户只喜欢一个乐队时,这工作得很好,但是当用户喜欢 2 个或更多乐队时,由于子查询返回多个结果,这将不起作用,但我尝试然后 GROUP_CONCAT 我结束了使用 WHERE 子句,如下所示

已删除

这会导致错误#1111 - 组函数的无效使用

如果有人能够帮助我做到这一点,因为我真的不想将负载放到 Apache 服务器上,将结果拉到 php 中以获取值并触发查询负载,这最终可能会达到数百个或者可能对页面的一个部分进行数千次查询

更新2: 呜呼有点...

SELECT 
    B.*,
    (SELECT COUNT(*) FROM `blog_likes` AS BL WHERE BL.`blog_id` = B.`blog_id` ) AS likes
FROM blog AS B
WHERE `tags` REGEXP (
    SELECT GOUP_CONCAT(ConcatBandNames, '|') 
    FROM (
        SELECT CONCAT(
            CONCAT(
                '%',
                (
                    SELECT 
                        `band_name` 
                    FROM `band` AS BA 
                    WHERE BA.`band_id` = 
                    ( 
                        SELECT `band_id` 
                        FROM `likes` AS L 
                        WHERE `user_id` = '7' 
                        AND `band_id` = BA.`band_id` 
                    )
                )
            )
            , '%'
        ) AS ConcatBandNames
    ) AS T
)

在语法方面工作,但现在它出错说#2014 - 命令不同步;您现在无法运行此命令

最佳答案

这就是它应该的样子 GROUP_CONCAT(CONCAT('.*',CONCAT(band_name, '.*')) SEPARATOR '|') 所以我的查询现在看起来像

SELECT 
    B.*,
    (SELECT COUNT(*) FROM `blog_likes` AS BL WHERE BL.`blog_id` = B.`blog_id` ) AS likes
FROM blog AS B
WHERE `tags` REGEXP (
    SELECT 
    GROUP_CONCAT(CONCAT('.*',CONCAT(`band_name`, '.*')) SEPARATOR '|') 
    FROM `band` AS BA 
    WHERE BA.`band_id` = 
    ( 
        SELECT `band_id` 
        FROM `likes` AS L 
        WHERE `user_id` = '7' 
        AND `band_id` = BA.`band_id` 
    )
)

关于mysql - REGEX 通过子查询中的 GROUP_CONCAT 值集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23035906/

相关文章:

mysql - 为什么这个查询要使用索引?

php - 在 phpMyAdmin (MySQL) 中创建外键

java - 在单独安装 MYSQL 的同时使用 XAMPP- phpmyadmin

mysql - 从 pivoting mysql 连接结果值

MySQL Group_Concat 按 Id 区分

mysql - ORDER BY 不适用于 MySQL 中的 CONCAT 语句

java - Mysql 过程存在多个 PREPARE 语句的问题

MySQL,大表查询的复合索引

apache -/etc/apache2/conf-available/phpmyadmin中没有phpmyadmin.conf

MYSQL - 合并具有多个重复值的行,然后删除重复项