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

标签 mysql if-statement where-clause

我希望你的日子过得比我的好。我认为今天早上我有一个简单的任务,根据一个公共(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/

相关文章:

php - 选择在带有 mysql_query 错误的 php 脚本中失败

php - 锁定MySQL中的最大值

php mySQL 房间预订日历显示预订时的错误日期

javascript - 如果(xxx || xxx),我做错了什么?

MYSQL,重复更新和 IF

python - pandas df 中列的条件填充

mysql - Docker 将应用程序连接到 mysql 主机

mysql - 我无法在 Linux 上启动 MySQL - 错误 mysqld_safe

swift : "Where"与 "If"

mysql - SQL Select Query中的Where条件算法