[英]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_increment
和auto_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.