Czy mogę odzyskać 2 różne (odwrotne) wyniki z jednego zapytania MySQL?

Zamiast robić coś takiego w 2 oddzielnych zapytaniach:

$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*/

Czy można to zrobić w jednym zapytaniu? Po prostu prośba o upewnienie się, w przypadku, gdy istnieje lepsza metoda, aby skuteczniej wykonywać moje zapytania.

0
ArabianMaiden 22 luty 2019, 01:10

2 odpowiedzi

Najlepsza odpowiedź

Jeśli chcesz wszystkie wartości w jednym zapytaniu, będziesz potrzebować sposobu na rozróżnienie wyników od siebie. W ten sposób musisz również wybrać kolumnę id. Aby ułatwić przetwarzanie, możesz także ORDER BY id <> 1 (co będzie 0 dla ID = 1, 1 inaczej), co zapewni Ci wszystkie wyniki dla id = 1, a następnie wszystkie wyniki dla {{{ X3}}:

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

Jeśli chodzi o używanie tego w PHP, możesz zrobić coś takiego (zakładając MySQLI z połączeniem $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'];
}

Ze względu na klauzulę {{X0}

1
Nick 21 luty 2019, 22:39

Jeśli chcesz wszystkie wartości z mojego_table, możesz spróbować tylko

SELECT my_column FROM my_table

Daje to wszystkie wartości, w których id = 1 i ID <> 1.

0
warun26 21 luty 2019, 22:14