php - 在 MySQL [+php?] 中合并的另一行

标签 php mysql sql

如果现有行中有空字段,我如何将行与现有行合并而不是插入它?

举个例子。现有行:

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/

相关文章:

sql - 检查一个值是否存在于多个表 SQL Server

php - AJAX 实时电子邮件验证 (PHP)

php - PHP cURL 选项 CURLOPT_HEADER 和 CURLOPT_RETURNTRANSFER 是否冲突

php - 从php中的逗号分隔字符串中删除特定关键字

mysql - org.hibernate.exception.GenericJDBCException : could not insert

mysql - 如何合并两个sql select语句

mysql - SQL - 如何根据条件获取每个值的计数?

mysql - 在 MySQL 表中将当前日期作为默认值插入

php - preg_match 匹配扩展名为 .jpg/.png 的文件

mysql - 使用 MySQL Json_search 函数使用不区分大小写的搜索获取 JSON 数据中值的路径表达式