MySql使用subselect更新

use*_*651 0 mysql subquery

我有一个mysql数据库表,其中有一个电子邮件列,最多可以包含两个以分号分隔的电子邮件.我想要实现的是将电子邮件字段中的第二个电子邮件地址写入另一列电子邮件2这是我迄今为止尝试过的但没有成功:

UPDATE user AS u
SET email2 = (SELECT SUBSTRING_INDEX(email, ';', -1)
              FROM user
              WHERE user.id=u.id)
WHERE username LIKE "%;%"
Run Code Online (Sandbox Code Playgroud)

在搜索这个问题时,有一些解决方案在子查询中没有第二个子查询,但它们都没有真正匹配我的问题.

如果有人有解决方案,请发布.我被困在了2个小时.

非常感谢你.

Rap*_*aus 5

不需要让你的生活复杂化:

UPDATE user 
SET email2 = SUBSTRING_INDEX(email, ';', -1) 
WHERE username LIKE '%;%';
Run Code Online (Sandbox Code Playgroud)

并清理同一查询中的第一列

UPDATE user 
SET 
  email2 = SUBSTRING_INDEX(email, ';', -1),
  email = SUBSTRING_INDEX(email, ';', 1),
WHERE username LIKE '%;%';
Run Code Online (Sandbox Code Playgroud)