php - 将 2 个查询连接到 1 个

标签 php mysql sql laravel query-builder

我有这样的代码:

$id = 5;
$a = 1;
$b = ($a === 2 ? 1 : 2);

DB::table('table')->where('id', $id)->where('value', $a)->update(['new_value' => 1]);
DB::table('table')->where('id', $id)->where('value', $b)->update(['new_value' => 2]);

是否可以在 1 次中完成这 2 个查询?

最佳答案

您不能为此使用查询构建器。使用 DB::statement 代替:

DB::statement('UPDATE table SET new_value = CASE 
               WHEN value = ? THEN ?
               WHEN value = ? THEN ?
               END WHERE id = ?', [
    $a, 1,
    $b, 2,
    $id,
]);

关于php - 将 2 个查询连接到 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27193925/

相关文章:

php - 如何用多维数组实现像excel小计函数这样的方法?

php - 将数组传递给 BasicNameValuePair?

mysql - SQL为每个年龄返回100个随机行

java - 从映射表中获取一个查询中的数据

mysql - 具有逗号分隔值的单个 MySQL 字段

sql - SQL中的多线程?

PHP-用多列的最小值更新一列

php - 警告 : mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql. socks )中

mysql - 如何将这段sql翻译成没有子查询的左连接?

sql - 如何使用破折号 (-) 作为条件值