MySQL多重查询>;将行存储到列中
我需要创建一个SQL查询,其中列出了下表。语言列表中的行作为列名。谢谢 图片表和查询:MySQL多重查询>;将行存储到列中,mysql,pivot,left-join,Mysql,Pivot,Left Join,我需要创建一个SQL查询,其中列出了下表。语言列表中的行作为列名。谢谢 图片表和查询: 如果事先知道语言 SELECT r.id, r.parent, MAX(CASE WHEN n.language_id = 1 THEN n.name END) cs, MAX(CASE WHEN n.language_id = 2 THEN n.name END) en FROM cat_route r LEFT JOIN cat_route_name n ON r.
如果事先知道语言
SELECT r.id, r.parent,
MAX(CASE WHEN n.language_id = 1 THEN n.name END) cs,
MAX(CASE WHEN n.language_id = 2 THEN n.name END) en
FROM cat_route r LEFT JOIN cat_route_name n
ON r.id = n.cat_route_id
GROUP BY r.id
这里是演示
如果您希望它是动态的,这取决于您在
language
SET @sql = NULL;
SELECT GROUP_CONCAT(CONCAT(
'MAX(CASE WHEN n.language_id = ', id, ' THEN n.name END) `', short, '`'))
INTO @sql
FROM language;
SET @sql = CONCAT(
'SELECT r.id, r.parent, ', @sql, '
FROM cat_route r LEFT JOIN cat_route_name n
ON r.id = n.cat_route_id
GROUP BY r.id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
这里是演示请分享您的尝试。这将有助于找到解决方案…这称为支点。关于这个话题,以前有成百上千的问题。请搜索它们。