MySQL到MariaDB-在不存在的情况下插入

时间:2018-06-21 13:53:34

标签: mysql mariadb

我对运行在mysql数据库而不是mariadb数据库中的脚本之一有此查询。

INSERT INTO myTable (item1, item2) 
    SELECT 'A','B' 
    WHERE NOT EXISTS (
        SELECT item1, item2
        FROM myTable 
        WHERE myTable.item1='A' AND myTable.item2='B') LIMIT 1;

如果此值不存在,则为插入值。

是否可以在两种数据库(mariaDB和mysql)上都使用这种查询?

1 个答案:

答案 0 :(得分:2)

您可以创建内联视图(1列1值,类似于Oracle中的double):

INSERT INTO myTable (item1, item2) 
    SELECT 'A','B' 
    FROM (SELECT 1 AS dummy) s
    WHERE NOT EXISTS (
        SELECT item1, item2
        FROM myTable 
        WHERE myTable.item1='A' AND myTable.item2='B') LIMIT 1;

-- or use dual directly
INSERT INTO myTable (item1, item2) 
    SELECT 'A','B' 
    FROM dual
    WHERE NOT EXISTS (
        SELECT item1, item2
        FROM myTable 
        WHERE myTable.item1='A' AND myTable.item2='B') LIMIT 1;

DBFiddle MySQL 8.0

DBFiddle MariaDB