행을 삽입하는 대신 기존 행에 빈 필드가있는 경우 어떻게 병합 할 수 있습니까?MySQL에서 병합하는 다른 행
여기 예입니다. 기존 행 :
id f1 f2 f3 f4 ...
0 a b
1 c
행 삽입 :
id f1 f2 f3 f4 ...
NULL d
필요한 결과 : 나는 이것에 대한 PHP 함수, 각 필드와 업데이트 SELECTS
빈 행했습니다
id f1 f2 f3 f4 ...
0 a d b
1 c
을 이 행의 데이터는 너무 느립니다. 이 코드를 개선하고 속도를 향상시킬 수있는 방법이 있습니까? 당신은 "upsert"로 일반적으로 알려진 것과이를 달성 할 수
foreach($cond as $cond_name = > $cond_value) {
if ($cond_value != '') {
$cond_count++;
$q = 'SELECT `id` FROM `g_ul_cond_orders` WHERE `ul_id`='.$ul_id.' AND `'.$cond_name.'`="" LIMIT 1;';
$r = mysql_query($q);
if ($r) {
if ($row = mysql_fetch_assoc($r)) {
$q = 'UPDATE `g_ul_cond_orders` SET `'.$cond_name.'`="'.$cond_value.'" WHERE `id`='.$row['id'].';';
$r = mysql_query($q);
if ($r) {
$cond[$cond_name] = '';
$cond_count--;
}
}
}
}
}
아, 간단합니다. 그것에 대해 생각하지 않았습니다. 고맙습니다. 이 경우 데이터가 한 번만 전송되기 때문에 시간이 줄어 듭니다. SELECT가 빈 결과를 반환하면 테이블을 업데이트하지 않습니다. 지금 가장 좋은 거래 – Goover
네, 거의 8 배 빠릅니다. 그냥 확인해 봤어. – Goover
하하 .. 작동하지 않기 때문에 너무 빠릅니다. 미안하지만 의도 한 테스트를하지 않았으므로 쿼리에 오류가 있습니다. – Goover