【发布时间】:2013-08-12 12:11:48
【问题描述】:
我有一个非常复杂的表格,如下所示:-
Snos 列 1 列 2 列 3 列 4 列 5 列 6 1 公元 AD1 C1 2011 P1 6435200 2 公元 AD1 C1 2010 P1 234 3 AD AD1 C1 2009 P1 6435 4 BD AD2 C2 2010 P2 198448333 5 CD AD3 C3 2011 P3 194414870现在,我需要处理一个查询,该查询应该复制一行,其中假设 p2、p3 或 p1、p2 甚至只是 p2 值不适用于该特定年份或 2009 年、2010 年或 2011 年的任何一个,并放在最后列的值为零。
所以现在我的数据库应该看起来像 -
Snos 列 1 列 2 列 3 列 4 列 5 列 6 1 公元 AD1 C1 2011 P1 6435200 2 公元 AD1 C1 2010 P1 234 3 AD AD1 C1 2009 P1 6435 4 公元 AD1 C1 2011 P2 0 5 公元 AD1 C1 2010 P2 0 6 公元 AD1 C1 2009 P2 0 7 公元 AD1 C1 2011 P3 0 8 公元 AD1 C1 2010 P3 0 9 公元 AD1 C1 2009 P3 0 10 BD AD2 C2 2010 P2 198448333 11 BD AD2 C2 2009 P2 0 12 BD AD2 C2 2011 P2 0 13 BD AD2 C2 2010 P1 0 14 BD AD2 C2 2009 P1 0 15 BD AD2 C2 2011 P1 0 16 BD AD2 C2 2010 P3 0 17 BD AD2 C2 2009 P3 0 18 BD AD2 C2 2011 P3 0 19 CD AD3 C3 2011 P3 194414870 20 CD AD3 C3 2009 P3 0 21 CD AD3 C3 2010 P3 0 22 CD AD3 C3 2011 P1 0 23 CD AD3 C3 2009 P1 0 24 CD AD3 C3 2010 P1 0 25 CD AD3 C3 2011 P2 0 26 CD AD3 C3 2009 P2 0 27 CD AD3 C3 2010 P2 0我尝试使用像这样的临时表
CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE *Some Condition*; 一些如果其他 然后 更新 tmptable_1 SET Column6 = 0; 插入表 SELECT * FROM tmptable_1; 如果存在 tmptable_1,则删除临时表;但它不起作用。谁能帮帮我。
【问题讨论】:
-
此表中的唯一约束列是什么。例如,如果您要检查 Column1 中的 AD voor 2012 Column4 应该有 2012 Column6 应该有一个 0 值,那么 2012 年的其他列应该有 2011 年的列的重复?
-
是的。确切地。如果数据不可用,它应该为 0。就像有些情况下 P1, P2 在第 5 列中可用,因此它应该通过复制剩余值并在最后一列中为零来插入所有年份的 p3。
标签: mysql sql duplicates