作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
INSERT INTO policy_consent_status (patien_ID,policy_ID,PS_ID)
VALUES
((SELECT patient_ID FROM patient WHERE first_name="Christine"),(SELECT policy_ID
FROM policy WHERE policy_name="PI"),6)
ON DUPLICATE KEY
UPDATE
patien_ID = VALUES((SELECT patient_ID FROM patient WHERE first_name="Christine")),
policy_ID = VALUES((SELECT policy_ID FROM policy WHERE policy_name="PI"))
PS_ID = 6
我必须插入新内容并更新现有
最佳答案
在ON DUPLICATE KEY UPDATE
中,VALUES
的参数必须是列的名称;它返回将插入到新行中的值。如果您想使用其他值,只需将表达式放在那里,不带 VALUES
。
但是您不需要多个子查询。使用 SELECT
查询作为要插入的值的来源。
此外,您不需要分配属于唯一键的列的值,只需分配要更新的列即可。我假设您的表中的唯一键是 patent_id
和 policy_id
的组合。
INSERT INTO policy_consent_status (patient_ID,policy_ID,PS_ID)
SELECT patient_id, policy_id, 6
FROM patient
CROSS JOIN policy
WHERE first_name="Christine"
AND policy_name="PI"
ON DUPLICATE KEY UPDATE PS_ID = VALUES(PS_ID)
关于mysql - 如何在 SQL 中使用 ON DUPLICATE KEY 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59818414/
我是一名优秀的程序员,十分优秀!