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`
   ;

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