gpt4 book ai didi

使用 IF 进行 MySQL 列 UPDATE 数据替换(#1054 - 'where clause' 中的未知列)

转载 作者:行者123 更新时间:2023-11-29 22:24:12 24 4
gpt4 key购买 nike

我希望你的日子过得比我的好。我认为今天早上我有一个简单的任务,根据一个公共(public)列组合 mysql 中的两个表(Distrib 5.5.43,用于 debian-linux-gnu)。基本上结构如下:

Practice1
Hip Description Purchaser Price
1 Bill Smith Sam Dillon $300,000
2 Justin Boyle Sarah Jones $75,000
3 Kevin Bains Anne Helan $120,000
4 Greg Demtri James Coon $250,000

Practice2
COL 1 COL 2 COL 3
2 James King $80,000
4 Bill Smell $300,000

我想要做的是使用 Practice2 中的值更新 Practice1。最终结果如下所示:

Practice1
Hip Description Purchaser Price
1 Bill Smith Sam Dillon $300,000
2 Justin Boyle James King $80,000
3 Kevin Bains Anne Helan $120,000
4 Greg Demtri Bill Smell $300,000

到目前为止我已经尝试过(但没有成功):

UPDATE Practice1
SET Practice1.Purchaser=(SELECT `COL 2` FROM `Practice2` WHERE Practice1.Hip=`Practice2`.`COL 1`),
Practice1.Price=(SELECT `COL 3` FROM `Practice2` WHERE Practice1.Hip=`Practice2`.`COL 1`)
ORDER BY Practice1.Hip

结果是我想要的信息被更新了,但是不应该被触摸的信息却变成了NULL!即-

Practice1
Hip Description Purchaser Price
1 Bill Smith NULL NULL
2 Justin Boyle James King $80,000
3 Kevin Bains NULL NULL
4 Greg Demtri Bill Smell $300,000

所以我尝试了“IF”类型的语句:

UPDATE Practice1
SET Practice1.Purchaser = if(Practice1.Purchaser=Practice2.`COL 2`, Practice1.Purchaser, Practice2.`COL 2`),
Practice1.Price = if(Practice1.Price=Practice2.`COL 3`, Practice1.Price, Practice2.`COL 3`)
WHERE Practice1.Hip=Practice2.`COL 1`
ORDER BY Practice1.Hip

这给了我错误“1054 - 'where 子句'中的未知列'Practice2.COL 1'”我认为我缺少一些基本的东西(我希望如此)。

最佳答案

尝试:

UPDATE  practice1 p1,  practice2 p2
SET p1.`Price` = p2.`COL3`, p1.`Purchaser` = p2.`COL2`
WHERE p1.`Hip` = p2.`COL1`
;

演示:http://sqlfiddle.com/#!9/b3a26/1

关于使用 IF 进行 MySQL 列 UPDATE 数据替换(#1054 - 'where clause' 中的未知列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30415991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com