sql >> Database teknologi >  >> RDS >> Mysql

MySQL:udskrivning af data kun én gang for hver gruppering

Hvis du vil have det gjort i MySQL-forespørgslen, er det ærlig talt mere besvær, end det er værd. For det første er syntaksen virkelig skæv (som jeg husker) at have et gruppenavn angivet øverst i hver gruppering. Og resultaterne behandles stadig som rækker, så gruppenavnet vil blive behandlet som en række med alle de andre kolonner som Null, så du vil ikke spare tid eller kræfter i PHP-scriptet, da det skal lave en if-sætning at fange, når den rammer et gruppenavn i stedet for gruppedataene.

Hvis du vil have det udført af PHP while-løkken, er Johan på rette vej. Jeg bruger følgende til en lignende situation:

$result = $sql->query($query);

$prev_group = "";

while($data = $result->fetch_assoc()){
   $curr_group = $data['group'];
   if ($curr_group !== $prev_group) {
      echo "<h1>$curr_group</h1>";
      $prev_group = $curr_group;
    }
    else {
        echo $data;
        .....
     }

Naturligvis vil ekkodataene blive sat op til at ekko dele af dataene, som du ønsker. Men $prev_group/$curr_group er sat op, så den eneste gang de ikke matcher, er når du er på en ny gruppe og dermed vil udskrive en header af en slags.



  1. php-advarsel, når du logger på webstedsmappen af ​​cpanel

  2. Hvordan ændrer jeg tabelkolonnedatatype på mere end 1 kolonne?

  3. sql grupper efter kun rækker, der er i rækkefølge

  4. mysql lagret procedure, der kalder sig selv rekursivt