【问题标题】:REGXP set of values though GROUP_CONCAT from subquery通过 GROUP_CONCAT 来自子查询的 REGEX 值集
【发布时间】:2014-04-12 20:42:44
【问题描述】:

我有一个可怕的问题,

已移除

现在,当用户只喜欢一个乐队时,这工作得非常好,但是当用户喜欢 2 个或更多乐队时,由于子查询返回多个结果,这将不起作用,但是我尝试然后 GROUP_CONCAT 我最终得到了 @987654322 @子句如下

已移除

这会导致错误#1111 - Invalid use of group function

如果有人能够帮助我做到这一点,因为我真的不想将负载放到 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 - Commands out of sync; you can't run this command now

【问题讨论】:

    标签: mysql phpmyadmin group-concat


    【解决方案1】:

    这应该是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` 
        )
    )
    

    【讨论】:

      猜你喜欢
      • 2021-09-12
      • 1970-01-01
      • 2011-04-28
      • 2013-10-19
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多