2016-01-29 4 views
4

Я пытаюсь объединить эти пять операторов обновления. Я уверен, что это просто, но я новичок в SQL и не могу понять логику.Объединить SQL ОБНОВЛЕНИЕ ЗАЯВЛЕНИЯ

$usqlM1 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM1']."' WHERE mcID='M1';" 
$usqlM2 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM2']."' WHERE mcID='M2';"; 
$usqlM3 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM3']."' WHERE mcID='M3';"; 
$usqlM4 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM4']."' WHERE mcID='M4';"; 
$usqlM5 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM5']."' WHERE mcID='M5';"; 

Любая помощь будет замечательной. Заранее спасибо!

ответ

8

A CASE заявление может это сделать. Вы можете добавить предложение where, чтобы система не оценивала каждую запись и улучшала производительность, если индексируется MCID.

UPDATE tblmaincircle set mcname = case when mcid = 'M1' then 'McNameM1' 
             when mcid = 'M2' then 'McNameM2' 
             when mcid = 'M3' then 'McNameM3' 
             when mcid = 'M4' then 'McNameM4' 
             when mcid = 'M5' then 'McNameM5' end 
where mcid in ('M1','M2','M3','M4','M5'); 
+0

@xqbert спасибо! Именно то, что я искал! –

+1

@Craig Howell: в этом случае вы не можете использовать подготовленные инструкции, но вы должны дезинфицировать переменные post, чтобы избежать внедрения sql. –

+0

@WilliamBurnham у вас есть хорошие ссылки для дезинфекции почтовых переменных. Я слышал об этом и хочу помнить об этом в будущем развитии. –

Смежные вопросы