【问题标题】:MySQL to MariaDB - INSERT INTO with WHERE NOT EXISTMySQL 到 MariaDB - INSERT INTO with WHERE NOT EXIST
【发布时间】:2018-06-21 22:03:57
【问题描述】:

我的一个脚本在 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)上都使用这种查询?

【问题讨论】:

  • 尝试在 select 上添加一个 from,其中包括以下几行:INSERT INTO myTable (item1, item2) SELECT 'A','B' FROM myTable WHERE NOT EXISTS (SELECT item1, item2 FROM myTable WHERE myTable.item1='A' AND myTable.item2='B') 限制 1;

标签: mysql mariadb


【解决方案1】:

您可以创建内联视图(1 列 1 值,如 Oracle 中的 dual):

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

【讨论】:

    猜你喜欢
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 2013-08-02
    相关资源
    最近更新 更多