我使用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语句应该如何?
答案 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