Mysql 使用JOIN和GROUP_CONCAT更新
我有4个表,其中一个需要更新Mysql 使用JOIN和GROUP_CONCAT更新,mysql,sql,join,sql-update,group-concat,Mysql,Sql,Join,Sql Update,Group Concat,我有4个表,其中一个需要更新 表t1需要根据表t2中的信息进行更新(t1.id=t2.id) 表t2包含有关网站的信息(例如ID、流量) 表t3是一个m:n表,它根据语言代码(ISO2)(例如XID:1 | ISO2:EN、DE、FR)将表t2中的ID与表t4中的语言链接起来 表t4包含ISO2代码(例如EN、DE、FR)和相应语言(英语、德语、法语) 现在我需要根据表t2、t3、t4中的信息更新表t1中的语言列 我已经编写了以下查询,但它显示SQL错误(1111):组函数的使用无效*/ U
- 表t1需要根据表t2中的信息进行更新(t1.id=t2.id)
- 表t2包含有关网站的信息(例如ID、流量)
- 表t3是一个m:n表,它根据语言代码(ISO2)(例如XID:1 | ISO2:EN、DE、FR)将表t2中的ID与表t4中的语言链接起来
- 表t4包含ISO2代码(例如EN、DE、FR)和相应语言(英语、德语、法语)
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技能不是很好,所以我不知道我还应该尝试什么。有人能解决这个问题吗?
提前谢谢 试试这个:
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;
按t4删除
订单。语言ASC
为什么要使用它?这看起来是个坏主意。