我有4个表,其中一个我需要更新。
表t1需要根据表t2中的信息进行更新(t1.id = t2.id)
表t2包含有关网站的信息(例如ID,流量)。
表t3是am:n table,它根据语言代码(ISO2)将表t2中的ID与表t4中的语言相关联(例如XID:1 | ISO2:EN,DE,FR)
表t4包含ISO2代码(例如EN,DE,FR)和各自的语言(英语,德语,法语)
现在我需要根据表t2,t3,t4中的信息更新表t1中的语言列。
我写了以下查询,但是它说SQL Error(1111):组函数的使用无效* /
UPDATE t1
LEFT JOIN t2
ON t1.id = t2.id
LEFT JOIN t3
ON t2.id = t3.X_id
LEFT JOIN t4
ON t3.languages_iso2 = t4.iso2
SET t1.languages = GROUP_CONCAT(t4.`language` ORDER BY t4.language ASC)
我知道这个解决方案不是最优雅的解决方案,但我的SQL技能并不是那么好,所以我不知道还应该尝试什么。有没有人有这个问题的解决方案? 提前谢谢!
答案 0 :(得分:1)
试试这个:
UPDATE t1
INNER JOIN (SELECT t2.id, GROUP_CONCAT(t4.language ORDER BY t4.language) languages
FROM t2
INNER JOIN t3 ON t2.id = t3.X_id
INNER JOIN t4 ON t3.languages_iso2 = t4.iso2
GROUP BY t2.id
) AS t2 ON t1.id = t2.id
SET t1.languages = t2.languages;