我可以从单个 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/