如果现有行中有空字段,我如何将行与现有行合并而不是插入它?
举个例子。现有行:
id f1 f2 f3 f4 ...
0 a b
1 c
要插入的行:
id f1 f2 f3 f4 ...
NULL d
需要的结果:
id f1 f2 f3 f4 ...
0 a d b
1 c
我为此创建了一个 PHP 函数,它为每个字段SELECTS
空行并更新这些行中的数据,但这太慢了。有什么方法可以改进和加速这段代码吗?
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--;
}
}
}
}
}
最佳答案
至少你可以使用一个查询来更新
UPDATE `g_ul_cond_orders` SET `'.$cond_name.'`="'.$cond_value.'" WHERE `id`= (SELECT `id` FROM `g_ul_cond_orders` WHERE `ul_id`='.$ul_id.' AND `'.$cond_name.'`="" LIMIT 1);
有了这个查询,就不需要第二个查询和代码中的结果了。
关于php - 在 MySQL [+php?] 中合并的另一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13655118/