2017-06-20 80 views
0
UPDATE campaigns.list_name_counter SET counter = CASE WHEN name = 'occupant' THEN '2' WHEN name = 'occupant' THEN '3' WHEN name = 'Resident' THEN '3' WHEN name = 'Resident' THEN '4' WHEN name = 'Resident' THEN '5' END WHERE name IN ('occupant', 'occupant', 'Resident', 'Resident', 'Resident'); 

此表只有3列。 ID,名称和计数器。当完成上述声明更新后,它只完成第一个居住者和第一个居民。它跳过了其余的部分。如果有的话,如果它只能为每个唯一的名称做一次,我宁愿它做每个的最后一个,而不是每个的第一个,但无论如何,它应该更新每一个,即使名称重复,或不是允许?我怎样才能让它更新最大的柜台数量,而不是最小的?我的语法是在哪里搞乱的?为什么这个bulk mysql case语句不起作用?

+0

如果您希望它在上一次真正的WHEN THEN上更新,为什么甚至有更早的?什么时候'name ='Resident''使用3而不是5? _另外,术语“散装箱”并没有太多意义。_ – Uueerdo

+0

重复WHEN条件的想法是什么? – axiac

+0

好吧,这很难解释,但它只是我的循环如何工作并收集csv文件的所有行。当所有的名字都是独一无二的时候,我可以做这件事实际上,即使有重复我可以使它的工作,如果名称还没有保存在表中,但一旦名称被保存,这是当重复它搞砸了,并没有采取行动。我需要提取当前计数器,然后在完成所有循环后使用正确的编号保存计数器编号。所以如果占有者存在,它的1和2更多在下一个csv然后它应该是3,如果居民存在计数器是2和3更多在下一个列表中,那么它应该以5结束。 – leoarce

回答

0

CASE语句不像C语言那样“经历”;只有第一场比赛将被使用;它们相当于“if ... else if .... else if ... else if ....”

相关问题