“不存在”的组合& “SELECT 1 FROM”无效

时间:2015-10-06 16:30:48

标签: php mysql sqlite

我在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))

结果是一条错误消息:

  

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

MySQL中的这个查询出了什么问题?

是否可以使此语句适用于MySQL和SQLite ???

2 个答案:

答案 0 :(得分:2)

使用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))

答案 1 :(得分:-1)

应该是:

m => m.RoleName

你错过了FROM。