繁体   English   中英

MySQL奇数和偶数自动递增的ID

[英]MySQL odd and even auto-incremented IDs

我在MySQL有两个表。 这两个表存储的是完全相同的东西,只有一个表存储的不是最终数据(以后将更改),而一个表存储的是最终数据。

NotFinal Table
----------------------
ID ParentID  Value
1     2       0.5
2     2       0.3

Final Table
----------------------
ID ParentID  Value
1     1       0.5
2     2       0.3
3     2       0.4

现在,问题是我想选择具有ParentID = 2的所有整体的ID ,与从哪个表中无关。 如果我从他们的1,2,2,3中选择,那么我将得到1,2,2,3在这种情况下, ID 2是重复的(ID 2在第一张表和第二张表中都有ParentID 2)。

因此,实际的问题是我不知道ID来自哪个表 为了解决这个问题,我想在非最终表中仅使用odd ID,在最终表中仅使用even ID。 这样做永远不会导致ID冲突,而且我将永远知道哪个ID来自哪个表。

我可以设置MySQL自动增量,以便第一个表中的ID为奇数,第二个表中的ID为偶数吗?

因此表将如下所示:

NotFinal Table
----------------------
ID ParentID  Value
1     2       0.5
3     2       0.3

Final Table
----------------------
ID ParentID  Value
2     1       0.5
4     2       0.3
6     2       0.4

您可以使用MySQL手册中提到的配置选项auto_increment_incrementauto_increment_offset

它们的主要用途是用于复制,但是由于它们也可以在每个会话中进行更改,因此您可以根据需要使用它们。 在操作这两个表中的任何一个之前,只需根据需要设置它们(仅更改会话变量,而不更改全局变量)。

我不知道ID来自哪张桌子

您可以为联合选择中的每个表单独将详细信息添加到结果集中。 例如,为is_final添加一列:

SELECT ID,ParentID,Value, true as `is_final` FROM `Final`
union
SELECT ID,ParentID,Value, false as `is_final` FROM `NotFinal`

为什么不在SAME表中都包含它们? 添加一个额外的整数列IS_FINAL,可以将其设置为1或0。对于非最终记录,将其设置为0;对于最终记录,将其设置为1。 这将是解决问题的一种更清洁的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM