WHERE NOT EXISTS"的组合,SELECT 1 FROM"不工作


combination of "WHERE NOT EXISTS" & "SELECT 1 FROM" not working

我有一个查询工作在SQLite,但它不工作在MySQL。

我正在使用:PHP, PDO, SQLite &MySQL

下面是查询:

INSERT INTO mytable (id, name, tag, timestamp)
    SELECT 11, 'Legio', 'LR', 1234567
        WHERE NOT EXISTS (
            SELECT 1 FROM mytable 
                WHERE id = 11 AND name = 'Legio' AND tag = 'LR' AND timestamp = (
                    SELECT max(timestamp) FROM mytable WHERE id = 11))

结果是一个错误消息:

在第3行'WHERE NOT EXISTS (SELECT 1 FROM mytable WHERE id = 11 AND name'附近出现语法错误。

MySQL中这个查询有什么问题?

是否可以在MySQL和SQLite中使用此语句??

使用WHERE子句时需要从表名中进行选择。由于您实际上不是从一个真实的表中进行选择,因此可以使用特殊的表名DUAL

INSERT INTO mytable (id, name, tag, timestamp)
SELECT 11, 'Legio', 'LR', 1234567
FROM DUAL
WHERE NOT EXISTS (
    SELECT 1 FROM mytable 
    WHERE id = 11 AND name = 'Legio' AND tag = 'LR' 
        AND timestamp = (
            SELECT max(timestamp) FROM mytable WHERE id = 11))

应该是:

SELECT 11, 'Legio', 'LR', 1234567 FROM `table_name` WHERE NOT EXISTS...

您错过了FROM。