在 MySQL 中,仅当同一行不存在时才从同一表中复制该行记录?



我试图弄清楚如何仅在不存在行的情况下从同一个表中复制行记录,但我找到的解决方案只是其中的一部分。比如,"复制记录"或"如果不存在则插入"。所以我试着把这些答案合并成我的答案,但是。。。我想我只是做了一些可憎的代码。

让我们看看这个

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);

最新更新