我在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 ???
答案 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。