我正在使用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";
我想要类别表中的多个类别。
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;
我使用group by和order by但不为我工作。
我认为在“INNER JOIN类别c ON c.id IN(u.category_id)”行中的问题,如果我在IN()中传递“2,6,8”代替u.category_id,请将其工作正常。
请看这个。
在第一个代码中,如果我在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)子句来检索正确的结果。