Pagina SHRA personale, blog-ul frilensera, dezvoltator web în PHP. Aici am împărtăși experiențele și gândurile mele, petrec experimente pe oameni, aduna dovezi intangibile ale propriei sale prostie. Folosind exemplul de cod de pe acest site, acceptați întreaga responsabilitate pentru consecințele utilizării lor, inclusiv sănătatea mintală și interesele părților terțe.
Blog / mySQL / sortați rezultatele folosind DISTINCT în MySql
Există un fenomen asociat cu sortarea internă într-un mySQL, care servește pentru a pune în aplicare funcționalitatea distincți (selecție de valori unice). Dacă încercați să sortați pe o coloană de tabele atașate, lipsa rezultatelor interogării, comanda prin sortare nu va funcționa așa cum vă așteptați.
Să considerăm un exemplu. Aici, am încercat pentru a sorta o listă de publicații (această bază de date Drupal) până la data specificată în tabelul extern cu o anumită clasificare. Rating-ul poate fi pus de multe ori, pentru că se debaraseze duplicate distinctului.
În loc să se alăture interior-ca un tabel existent, vom adăuga timp. Sortarea se face deja de last_dtm coloana Adjoint.
Rezultatul ultimei cereri:
Din al doilea exemplu de realizare este problema diferită a ultimelor trei linii. Ei au aceeași dată de valoare (DTM) - coloana, sortarea.
Mai multe opțiuni ...
Am menționat că sortarea prin coloane din tabelul principal este deținut fără probleme. În cazul în care structura de date permite, puteți adăuga ceea ce doriți să sortați coloana din tabelul de bază. Putem, de exemplu, pentru a seta ultima dată de rating (DTM) de fiecare dată când adăugați intrări în rating_log, și a pus această valoare în plus. coloană nod al tabelului.
În anumite cazuri, sortarea sau duplicate cernerea se poate face pe partea de PHP, atunci problema va fi, de asemenea, eliminate.
Uneori trebuie să selectați rânduri din baza de date la întâmplare. Când saitostroitel'stva această problemă apare destul de des - pentru a aduce un subiect aleatoriu din show forum în produsul promovat aleatoriu bloc, arată un vizitator casual, în ultimul răspuns.
MySQL vă permite să utilizați cursoare (cursoare) în procedurile memorate. Acest design vă permite să organizați prelucrarea complexă a datelor pe partea de server.