您可以从一个MySQL查询中获得2个不同的结果吗?

时间:2019-02-21 22:10:42

标签: php mysql

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

与其在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*/

是否可以在单个查询中执行此操作? 只是要求确保,以防万一有更好的方法可以更有效地执行我的查询。

2 个答案:

答案 0 :(得分:1)

如果要在一个查询中使用所有值,则需要一种将结果彼此区分开的方法。因此,您还需要选择id列。为了便于处理,您还可以ORDER BY id <> 1(id = 1时为0,否则为1),它将首先为您提供id = 1的所有结果,然后为{{ 1}}:

id <> 1

就在PHP中使用它而言,您可以执行类似的操作(假设mysqli具有连接SELECT id, my_column FROM my_table ORDER BY id <> 1 ):

$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,其效果与顺序执行两个查询相同。

答案 1 :(得分:0)

如果要获取my_table中的所有值,则可能只想尝试

SELECT my_column FROM my_table

这将给出id = 1和id <> 1的所有值。