INSERT…SELECT ORDER BY的MySQL复制

|| INSERT ... SELECT的文档页面指出,要使
INSERT ... SELECT
能够进行复制,必须使用
ORDER BY
some列,以便可以按可预测的顺序插入行,因此自动递增列将正确运行。 这让我想知道...当您执行ѭ1且选择的列不唯一时,MySQL使用什么来决定进一步的排序?它必须是确定性的,否则文档会说您需要选择一个“ѭ1”唯一列,是吗?还是文档错误?     
已邀请:
如果您将ORDER BY与没有为所有匹配行使用不同值的列一起使用,则顺序不确定,可以。 如果插入的顺序很重要,则这会中断基于语句的复制。如果在目标表中使用auto_increment列,则插入顺序当然很重要,但通常不会如此。 如果语句上有一个LIMIT(也更新和删除),则顺序也很重要。 但是,如果您使用基于行的复制,则可以执行几乎所有您想做的事情,而且不会中断复制。至少,除非您确实尝试过,否则不要这样做。 这些规则是如此复杂,以至于我建议您始终在插入...选择或带有LIMIT的更新上始终使用完全确定的ORDER BY。 基于行的复制也是您的朋友。我并没有在生产中真正使用过它,但是了解 它更类似于复制在其他数据库中的工作方式 在大多数情况下,它就是可行的。     

要回复问题请先登录注册