正在尝试为MySQL配置Insert into命令

正在尝试为MySQL配置Insert into命令,mysql,sql,Mysql,Sql,我对SQL非常陌生,需要一些帮助来配置命令。我的数据库结构的详细信息可在此线程中找到: 一般的问题是,我正在合并一个新的临时数据库和一个旧数据库。我想将所有数据保留在旧版本中,但复制新版本中的任何新数据。如果有复制品,应优先考虑/保留旧的 我现在的命令是: INSERT INTO BAT_players SELECT * FROM bat2.bat_players WHERE NOT EXISTS (SELECT 1 FROM BAT_players WHERE BAT_players(UU

我对SQL非常陌生,需要一些帮助来配置命令。我的数据库结构的详细信息可在此线程中找到: 一般的问题是,我正在合并一个新的临时数据库和一个旧数据库。我想将所有数据保留在旧版本中,但复制新版本中的任何新数据。如果有复制品,应优先考虑/保留旧的

我现在的命令是:

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));
当我运行这个时,我会 功能bat2.bat_玩家未定义或功能bat.bat_玩家未定义


我不知道如何继续,非常感谢您的帮助。

我不熟悉MySQL的概念

老实说,我使用过SQL Server,但是如果所有的基础设施都是相同的,我说如果,那么数据库之间的此类事务就有一个技巧,这就是短语dbo

如下图所示:

使用蝙蝠 插入bat_播放器 从bat2.dbo.bat_播放器中选择* 还有你的其他条件

不使用短语using bat,您只需将dbo添加到:

插入bat.dbo.bat_播放器 还有你的其他情况, 只需记住在每个[表名]之前使用dbo

巨大的更新

如果要访问字段列,则必须使用。正如上面@Gordon Linoff所解释的那样。例如:

... 其中bat2.dbo.bat_players.UUID=-条件-
可以使用访问列。不是帕伦斯:

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 . . .
    . . .

BAT_playersUUID和bat2.BAT_playersUUID应该做什么?你像调用函数一样调用它们。OP使用bat2作为bat_玩家的别名。此外,您没有解决OP得到的错误,也没有考虑OP想要合并两个表的事实。@Cully您看到您的其余条件了吗??也就是说,在上面给出的bat2链接中,根据其数据库模型的来源,第二个合并两个表所需的条件是另一个完全第三个数据库。。。问题是由另一个用户解决的,关于错误哦,是的,关于bat2你是对的。顺便说一句,我没有投你的反对票。@Cully Its ok brother你的评论让我意识到我需要改变我答案的某些部分,为此我感谢你的作品!非常感谢你。