如何将此REPLACE INTO语句转换为MySQL中的等效UPDATE语句?

时间:2014-11-08 06:30:51

标签: mysql sql join sql-update

我使用REPLACE INTO得到以下MySQL语句:

 INSERT INTO `tableX`.latest_status (tableX_id, name, nick)
 (
     SELECT records.id,
            records.name,
            records.nick
     FROM `tableX`.records records
     WHERE (`records`.`time` = 0)
 )
 ON DUPLICATE KEY UPDATE name=tableX.name, nick=tableX.nick

由于创建了一些错误,我意识到REPLACE INTO不适合我的应用。我想要的是更新现有的行。如果该行不存在,则不执行任何操作。我猜UPDATE应该是正确的使用条款。我在这一点上是对的吗?

我尝试使用UPDATE将上述MySQL语句转换为等效语句。这是代码;

UPDATE `tableX`.latest_status
SET tableX_id, name, nick =
(
     SELECT records.id,
            records.name,
            records.nick
     FROM `tableX`.records records
     WHERE (`records`.`time` = 0)
)

不幸的是,SET tableX_id, name, nick存在一些语法错误。等效的UPDATE语句应该如何?

2 个答案:

答案 0 :(得分:3)

我不知道我是否得到你想要的东西,但这可能会对你有帮助(我想你可以用你的桌子做点什么)

UPDATE patient
SET full_name=(
     SELECT full_name
     FROM staff
     WHERE staff.id=patient.id
)
,national_number =
(
     SELECT national_number
     FROM staff
     WHERE staff.id=patient.id
)

答案 1 :(得分:1)

您的语法已关闭 - 您无法编写类似的查询。

尝试通过加入进行更新:

UPDATE tableX.latest_status s
JOIN tableX.records r
  ON id = tableX_id
  AND r.name = s.name
  AND time = 0
SET s.nick = r.nick