我试图弄清楚如何仅在不存在行的情况下从同一个表中复制行记录,但我找到的解决方案只是其中的一部分。比如,"复制记录"或"如果不存在则插入"。所以我试着把这些答案合并成我的答案,但是。。。我想我只是做了一些可憎的代码。
让我们看看这个
INSERT INTO LCL
SELECT * FROM LCL WHERE (UID = 0 AND NAME = 'S_TYPE')
WHERE NOT EXISTS (SELECT * FROM LCL WHERE UID = 11 AND NAME = 'S_TYPE' LIMIT 1);
有一个默认格式的UID = 0
记录。如果没有NAME = S_TYPE
的记录,则复制NAME = S_TYPE AND UID = 0
的记录,并将UID
更改为11。该记录应复制所有列的数据。所以我尝试使用SELECT*,但不确定它是否正确。
我确信我搞砸了两个WHERE
…
如果您已经有了WHERE
,那么后续应该是AND
。我不认为你真的需要第一个WHERE
上的括号,所以:
INSERT INTO LCL
SELECT * FROM LCL
WHERE UID = 0 AND NAME = 'S_TYPE'
AND NOT EXISTS (SELECT * FROM LCL WHERE UID = 11 AND NAME = 'S_TYPE' LIMIT 1);