从子查询中选择

时间:2017-07-18 18:50:08

标签: mysql sql select group-concat

我试图从子查询中选择限制group_concat函数,我在这里使用

SELECT 

GROUP_CONCAT(
    CONCAT(
`comment_content`,' , ',
    (SELECT CONCAT(`first_name`, ' ', `last_name`)  FROM `users` WHERE `uid` = t1.`uid` LIMIT 1)
) SEPARATOR " | " )


FROM  `posts_comments`t1  WHERE `pid` = 324 LIMIT 4 

以上查询工作正常,但不限制结果,所以我正在尝试的是

SELECT 

GROUP_CONCAT(
    CONCAT(
`comment_content`,' , ',
    (SELECT CONCAT(`first_name`, ' ', `last_name`)  FROM `users` WHERE `uid` = t1.`uid` LIMIT 1)
) SEPARATOR " | " )


FROM ( SELECT * FROM  `posts_comments`   WHERE `pid` = 324 ORDER BY `comment_date` DESC LIMIT 4 ) t1

从子查询结果中进行选择,但我收到此错误

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法

     

靠近' LIMIT 0,25'在第10行

我试图解决这个问题但没有运气为什么我在尝试从子查询中选择时会出现此错误?

更新1

问题来自于此

  

(SELECT CONCAT(first_name,'',last_name)FROM users WHERE   uid = t1。uid限制1)

请原谅我在加入用户表时从另一张桌子中进行选择并在本地选择它正在w

1 个答案:

答案 0 :(得分:0)

走向另一个方向:

SELECT GROUP_CONCAT(CONCAT(..., name, ...))
    FROM (
        SELECT CONCAT(first, ' ', last) AS name
            FROM posts_comments
            JOIN users ON ...
            WHERE ...
         ) AS x

但首先要获取子查询("派生")以在列中生成4个名称。 然后就像上面的FROM一样。