我有以下使用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语句应该是什么样子?
我不知道我是否得到了你想要的,但这可能会对你有所帮助(我认为你可以对你的表做一些类似的事情)
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
)
您的语法不正确-您不能编写类似的查询。
尝试通过加入进行更新:
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