首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MariaDB更新错误内部连接并选择

问MariaDB更新错误内部连接并选择
EN

Stack Overflow用户
提问于 2013-12-16 10:22:20
回答 2查看 4K关注 0票数 1

我希望您能再次帮助我,已经感谢您为德国的新IBAN创建了检查数字,为我指出了正确的方向。我现在正在尝试用新计算的BIC和IBAN更新我们的成员数据库,但是尽管我认为语法正确,但MariaDB MySQL数据库上的update语句似乎有问题。

我所要做的就是在SELECT语句中的表"mitglieder“中设置两个字段"konto_bic”和"konto_iban“,这两个字段创建了一个名为b的临时表,其中列为"id”、"bic“和"iban”。两个表中的"id“是相同的。

这是我的第一次尝试:

代码语言:javascript
复制
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`

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

代码语言:javascript
复制
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`

这也没有让我进一步了解(来自DB的错误)。

有人能看到我的语法错误可能是什么吗?预先感谢您的帮助

斯蒂芬恩

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-16 10:32:28

尝试在SQL下面

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2017-11-10 20:36:12

我在MariaDB 10.2.6上尝试过这个:

代码语言:javascript
复制
SET sql_mode = 'ANSI_QUOTES'

UPDATE "test"."user" AS "a"
INNER JOIN "test"."user_profile" AS "c" ON "c".user_id = "a".id
INNER JOIN "test"."profile" AS "d" ON "d".id = "c".profile_id
SET "a".firstname = 'laurent'
WHERE "a".id = 3;

它的作用是:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20608428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档