MySQL奇数甚至自动递增的ID

时间:2015-06-19 08:53:30

标签: php mysql database-design

我在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

现在,问题是我要选择ID所有具有ParentID = 2的entires,与哪个表无关。如果我从他们的加入中选择,那么我将获得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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

  

我不知道ID来自哪个表

您可以为union选择中的每个表单独添加结果集的详细信息。例如为 for (DataSnapshot child : dataSnapshot.getChildren()){ //child is each element in the finished list Map<String, Object> message = (Map<String, Object>)child.getValue(); Message msg = new Message((String) message.getValue().get("message"), (String) message.get("name")); } 添加一列:

is_final

答案 2 :(得分:0)

为什么不在SAME表中同时使用它们?添加一个名为IS_FINAL的额外整数列,可以设置为1或0.将非最终记录设置为0,最终记录设置为1。这将是解决问题的一种更清洁的方式。