MySQL 列使用 IF 更新数据替换(#1054 - 'where clause' 中的未知列)
MySQL column UPDATE data subsitution using IF (# 1054 - Unknown column in 'where clause')
我希望你的日子过得比我好。我认为今天早上我有一个简单的任务,可以基于一个公共列合并 mysql(Distrib 5.5.43,对于 debian-linux-gnu)中的两个表。基本上结构如下:
Practice1
Hip Description Purchaser Price
1 Bill Smith Sam Dillon 0,000
2 Justin Boyle Sarah Jones ,000
3 Kevin Bains Anne Helan 0,000
4 Greg Demtri James Coon 0,000
Practice2
COL 1 COL 2 COL 3
2 James King ,000
4 Bill Smell 0,000
我想做的是用 Practice2 中的值更新 Practice1。最终结果如下所示:
Practice1
Hip Description Purchaser Price
1 Bill Smith Sam Dillon 0,000
2 Justin Boyle James King ,000
3 Kevin Bains Anne Helan 0,000
4 Greg Demtri Bill Smell 0,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 ,000
3 Kevin Bains NULL NULL
4 Greg Demtri Bill Smell 0,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 clause' 中的未知列 'Practice2.COL 1'”
我认为我缺少一些基本的东西(我希望)。
尝试:
UPDATE practice1 p1, practice2 p2
SET p1.`Price` = p2.`COL3`, p1.`Purchaser` = p2.`COL2`
WHERE p1.`Hip` = p2.`COL1`
;
我希望你的日子过得比我好。我认为今天早上我有一个简单的任务,可以基于一个公共列合并 mysql(Distrib 5.5.43,对于 debian-linux-gnu)中的两个表。基本上结构如下:
Practice1
Hip Description Purchaser Price
1 Bill Smith Sam Dillon 0,000
2 Justin Boyle Sarah Jones ,000
3 Kevin Bains Anne Helan 0,000
4 Greg Demtri James Coon 0,000
Practice2
COL 1 COL 2 COL 3
2 James King ,000
4 Bill Smell 0,000
我想做的是用 Practice2 中的值更新 Practice1。最终结果如下所示:
Practice1
Hip Description Purchaser Price
1 Bill Smith Sam Dillon 0,000
2 Justin Boyle James King ,000
3 Kevin Bains Anne Helan 0,000
4 Greg Demtri Bill Smell 0,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 ,000
3 Kevin Bains NULL NULL
4 Greg Demtri Bill Smell 0,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 clause' 中的未知列 'Practice2.COL 1'” 我认为我缺少一些基本的东西(我希望)。
尝试:
UPDATE practice1 p1, practice2 p2
SET p1.`Price` = p2.`COL3`, p1.`Purchaser` = p2.`COL2`
WHERE p1.`Hip` = p2.`COL1`
;