MySQL更新字段遇1093错误:如何合并管理员账号信息更新至指定字段?
解决错误1093的两种方案
错误1093是因为MySQL不允许在UPDATE语句的子查询中直接引用被更新的目标表users,可以通过以下两种方式绕过:
方案一:将子查询嵌套为临时表
把原GROUP_CONCAT查询包装成临时表,避免直接引用目标表:
UPDATE users SET first_name = ( SELECT account_information FROM ( SELECT group_concat(email, " ", password) AS account_information FROM users WHERE is_admin = 1 ) AS temp ) WHERE id = 6;
方案二:使用JOIN方式更新
用JOIN替代子查询,这种写法更适配MySQL的执行逻辑:
UPDATE users u1 JOIN ( SELECT group_concat(email, " ", password) AS account_information FROM users WHERE is_admin = 1 ) AS u2 SET u1.first_name = u2.account_information WHERE u1.id = 6;
两种方法都能完成需求:将所有管理员的email和password合并后,更新到id=6用户的first_name字段。
内容的提问来源于stack exchange,提问作者daboogymenz06
相关产品推荐
相关产品推荐

