首页 > 解决方案 > 尝试为 MySQL 配置插入命令

问题描述

我对 SQL 很陌生,需要一些帮助来配置命令。我的数据库结构的详细信息可以在这个线程中找到: 如何从 MySQL 中 的 2 个表中复制新数据但跳过旧数据一般的问题是我正在将一个新的(临时)数据库与一个旧的数据库合并。我想将所有数据保留在旧数据中,但从新数据中复制任何新数据。如果有重复,则应优先使用/保留旧的。

我当前的命令是:

INSERT INTO BAT_players
SELECT * 
FROM bat2.bat_players
WHERE NOT EXISTS (SELECT 1 FROM  BAT_players WHERE BAT_players(UUID) = bat2.bat_players(UUID));

当我运行它时,我得到 Function bat2.bat_players undefinedFunction bat.BAT_players undefined

我不知道如何进行,希望能得到帮助。

标签: mysqlsql

解决方案


使用.非括号访问列:

INSERT INTO BAT_players
    SELECT * 
    FROM bat2.bat_players bp2
    WHERE NOT EXISTS (SELECT 1
                      FROM BAT_players bp
                      WHERE bp.UUID = bp2.UUID
                     );

请注意,列必须按位置对应,因为您没有明确列出它们。作为一般规则,您希望列出插入中的所有列:

INSERT INTO BAT_players ( . . . )
    SELECT . . .
    . . .

推荐阅读