mysql - MariaDB 更新报错 inner join 和 select

标签 mysql sql-update inner-join mariadb iban

希望您能再次帮助我,感谢您为我在德国创建新 IBAN 的校验位指明了正确的方向。我现在正尝试使用新计算的 BIC 和 IBAN 更新我们的成员(member)数据库,但 MariaDB MySQL 数据库上的 UPDATE 语句似乎有问题,尽管我认为我的语法正确。

我想要做的就是在 SELECT 语句的表“mitglieder”中设置两个字段“konto_bic”和“konto_iban”,该语句创建一个名为 b 的临时表,其中包含列“id”、“bic”和“伊类”。两个表中的“id”相同。

这是我的第一次尝试:

update a
set a.`konto_bic` = b.`BIC`, a.`konto_iban` = b.`IBAN`
from `mitglieder` a
INNER JOIN (SELECT m.`id`, m.`nachname`, m.`vorname`, m.`konto_bank`, m.`konto_blz`, m.`konto_nummer`, k.`bic` AS 'BIC', CONCAT('DE',LPAD(98-MOD(CONVERT(CONCAT(m.`konto_blz`,LPAD(m.`konto_nummer`,10,'0'),'1314','00'), decimal(24)),97),2,'0'),m.`konto_blz`,LPAD(m.`konto_nummer`,10,'0')) AS 'IBAN'
FROM `mitglieder` m
LEFT JOIN `konvert_bic_blz` k
ON m.`konto_blz` = k.`blz`
ORDER BY m.`nachname`, m.`vorname`) b
ON a.`id` = b.`id`

但是,这产生了一个错误,我尝试了这个:

update `mitglieder` a
set a.`konto_bic` = b.`bic`, a.`konto_iban` = b.`iban`
FROM (SELECT m.`id` as 'id', k.`bic` as 'bic', CONCAT('DE',LPAD(98-MOD(CONVERT(CONCAT(m.`konto_blz`,LPAD(m.`konto_nummer`,10,'0'),'1314','00'), decimal(24)),97),2,'0'),m.`konto_blz`,LPAD(m.`konto_nummer`,10,'0')) AS 'iban'
FROM `mitglieder` m
LEFT JOIN `konvert_bic_blz` k
ON m.`konto_blz` = k.`blz`) b
WHERE a.`id` = b.`id`

这也没有让我更进一步(来自数据库的错误)。

谁能看出我的语法错误可能是什么? 预先感谢您的帮助

斯蒂芬

最佳答案

试试下面的SQL

UPDATE `mitglieder` a,
       (SELECT m.`id` AS 'id',
               k.`bic` AS 'bic',
               CONCAT('DE',LPAD(98-MOD(CONVERT(CONCAT(m.`konto_blz`,LPAD(m.`konto_nummer`,10,'0'),'1314','00'), decimal(24)),97),2,'0'),m.`konto_blz`,LPAD(m.`konto_nummer`,10,'0')) AS 'iban'
        FROM `mitglieder` m
        LEFT JOIN `konvert_bic_blz` k ON m.`konto_blz` = k.`blz`) b
SET a.`konto_bic` = b.`bic`, a.`konto_iban` = b.`iban`
WHERE a.`id` = b.`id`

更新语法

http://dev.mysql.com/doc/refman/5.0/en/update.html

关于mysql - MariaDB 更新报错 inner join 和 select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20608428/

相关文章:

MySQL 重命名并覆盖现有表

mysql - 查询求和mysql中不同表的不同列

SQL Join on where 条件

mysql - 如何编写这种类型的内部连接

sql - MySQL 条件删除外键脚本

mysql - 我们可以使用 JPA Repository 从 Mysql View 中提取/获取数据吗?如果是的话怎么办?

mysql - 搜索列包含所有给定值的行组

mysql - 从 MySQL 表中的值中修剪空格

mysql - 更新sql以仅在日期时间中更改时间

MySQL 使用 select 更新表中的多个列和记录