php - 你能从一个 MySQL 查询中得到 2 个不同的结果吗?

标签 php mysql

我可以从单个 mysql 查询中检索 2 个不同(相反)的结果吗?

不要在两个单独的查询中执行类似的操作:

$sql = "SELECT my_column FROM my_table WHERE id = 1";
/*if num_rows > 0, echo rows from $sql*/
$sql2 = "SELECT my_column FROM my_table WHERE id <> 1";
/*if num_rows > 0, echo rows from $sql2*/

是否可以在单个查询中完成此操作? 只是询问是否有更好的方法可以更有效地执行我的查询。

最佳答案

如果您想要一个查询中的所有值,则需要一种方法来区分结果。因此您需要选择id专栏也是如此。为了方便处理,您还可以ORDER BY id <> 1 (id=1 时为 0,否则为 1),这将为您提供 id = 1 的所有结果首先是 id <> 1 的所有结果:

SELECT id, my_column
FROM my_table
ORDER BY id <> 1

就在 PHP 中使用它而言,您可以执行类似的操作(假设 mysqli 具有连接 $conn ):

$id_to_find = 4;
$last_id = 0;
$sql = "SELECT id, my_column FROM my_table ORDER BY id <> $id_to_find";
$result = $conn->query($sql) or die($conn->error);
while ($row = $result->fetch_assoc()) {
    if ($row['id'] == $id_to_find) {
         // do something
    }
    else {
         if ($last_id == $id_to_find) {
              // output distinguishing line
         }
         // do something else
    }
    $last_id = $row['id'];
}

因为ORDER BY子句,这将完成所有 somethings在所有something elses之前这与顺序执行两个查询具有相同的效果。

关于php - 你能从一个 MySQL 查询中得到 2 个不同的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54817025/

相关文章:

php - 谷歌 API : 404 Domain not found

来自 jQuery $.post 的 PHP session

PHP/MYSQL - 如何只为每个不同的值选择最近的值

mysql - 如何合并这两个 MySQL 查询

php - 无法阻止在 Laravel 中向浏览器显示 SwiftMailer 异常

javascript - AJAX PHP 数据库查询不起作用

mysql - 如何在terraform user_data上执行mysql脚本插入?

php - 使用 call_user_func_array() 动态构建准备好的语句

mysql - MySQL 短路 IF() 函数吗?

mysql - 显示本月尚未创建项目的用户(count=0)