将 Oracle 合并查询转换为 mysql mySQL 查询
Posted
技术标签:
【中文标题】将 Oracle 合并查询转换为 mysql mySQL 查询【英文标题】:Converting an Oracle merge query into mysql mySQL query 【发布时间】:2008-12-26 10:45:53 【问题描述】: MERGE INTO PAGEEDITCONTROL A
USING (SELECT
'1585' AS PAGEID
,'admin' AS EDITUSER
,sysdate AS EDITDATE
FROM DUAL) B
ON (A.PAGEID = B.PAGEID)
WHEN MATCHED THEN
UPDATE SET
A.EDITUSER = B.EDITUSER
,A.EDITDATE = B.EDITDATE
WHEN NOT MATCHED THEN
INSERT (
A.PAGEID
,A.EDITUSER
,A.EDITDATE
)VALUES(
B.PAGEID
,B.EDITUSER
,B.EDITDATE
)
【问题讨论】:
【参考方案1】:INSERT INTO
pageeditcontrol (pageid, edituser, editdate)
VALUES ('1585', 'admin', sysdate())
ON DUPLICATE KEY UPDATE
edituser = values(edituser),
editdate = values(editdate);
【讨论】:
根据***.com/a/548570/1563700,这是先删除然后再插入。删除可以级联到外键并且可以执行删除触发器。这可能会以您意想不到的方式修改您的数据库 @mklemenz 答案中谈到的删除和插入与 REPLACE 语句有关,而不是 INSERT INTO ON DUPLICATE KEY UPDATE【参考方案2】:mysql 有一个类似的构造,它看起来不像是一个 upsert,但更像一个 insate:INSERT ... ON DUPLICATE KEY UPDATE
(参见 MySQL reference manual)。
【讨论】:
以上是关于将 Oracle 合并查询转换为 mysql mySQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
只是想知道如何使用合并语句将下面的查询转换为 oracle 查询?