我在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
答案 0 :(得分:1)
您可以使用MySQL manual中提到的配置选项auto_increment_increment
和auto_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。这将是解决问题的一种更清洁的方式。