首页  >  问答  >  正文

如何在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 * 但不确定是否正确。

我确定我把两个 WHEREs 搞砸了...

P粉729518806P粉729518806240 天前379

全部回复(1)我来回复

  • P粉860897943

    P粉8608979432024-02-22 11:55:57

    如果您已经有 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);

    回复
    0
  • 取消回复