Group_concat结果不准确

问题描述 投票:0回答:3

我正在使用GROUP_CONCAT()来显示多个类别,但我没有得到确切的结果。对于表连接,我正在使用IN()子句请帮助我。

查询仅显示单个类别。在数据库类别ID存储像2,5,8

$sql = "SELECT u.*, GROUP_CONCAT(c.name SEPARATOR ',') as cname, s.name as sname
        FROM course u        
        INNER JOIN category c ON c.id IN (u.category_id) 
        INNER JOIN status s ON s.id = u.status_id
        WHERE u.is_deleted = 0 AND u.id = $id $app
        LIMIT 1";

我想要类别表中的多个类别。

php mysql join group-concat
3个回答
0
投票

group_concat是一个聚合函数,为了正确使用这些函数,当你还需要列而不是aggrefated时,需要GROUP BY子句和列名用于聚合级别

    SELECT  GROUP_CONCAT(c.name SEPARATOR ',') as cname, s.name as sname
    FROM course u        
    INNER JOIN category c ON c.id IN (u.category_id) 
    INNER JOIN status s ON s.id = u.status_id
    WHERE u.is_deleted = 0 AND u.id = $id $app
    GROUP BY s.name
    ORDER BY s.name 
    LIMIT 1; 

0
投票

我使用group by和order by但不为我工作。

我认为在“INNER JOIN类别c ON c.id IN(u.category_id)”行中的问题,如果我在IN()中传递“2,6,8”代替u.category_id,请将其工作正常。

请看这个。


0
投票

在第一个代码中,如果我在IN()子句中使用自定义id工作正常

$ sql =“SELECT u。*,GROUP_CONCAT(c.name SEPARATOR' ')as cname,s.name as sname FROM course u INNER JOIN类别c ON c.id IN(3,1,9)INNER JOIN状态s ON s.id = u.status_id WHERE u.is_deleted = 0 AND u.id = $ id $ app LIMIT 1“;

如果我在IN()子句中使用'u.category_id'查询只检索一个类别

$ sql =“SELECT u。*,GROUP_CONCAT(c.name SEPARATOR' ')as cname,s.name as sname FROM course u INNER JOIN类别c ON c.id IN(u.category_id)INNER JOIN状态s ON s.id = u.status_id WHERE u.is_deleted = 0 AND u.id = $ id $ app LIMIT 1“;

我想在查询中使用IN(u.category_id)子句来检索正确的结果。

© www.soinside.com 2019 - 2024. All rights reserved.