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

MySQL tilfældig resultatgruppe efter bestilling efter

Din forespørgsel er imod sql-standarden, fordi du angiver kolonner i select-listen, som du ikke angiver i group by-sætningen, og som heller ikke er genstand for en aggregeret funktion, såsom count(). MySQL tillader denne funktionalitet under visse sql-tilstandsindstillinger.

Men selvom denne funktionalitet aktiverede MySQL har begrænsninger på de data, der er valgt fra de ikke-aggregerede felter :

Så i stedet for at bruge group by, brug sortering og limit-sætningen for at begrænse output:

select * from job
    where type = 1
    order by rand()
    limit 1

Bemærk også, at denne tilfældige udvælgelsesmetode er meget ressourcekrævende, da MySQL først skal sortere hele resultatsættet uden at bruge noget indeks. Der er andre måder at tilfældigt vælge data fra en tabel uden at bruge order by rand() .



  1. MariaDB DAG() Forklaret

  2. Oprettelse af dynamisk forespørgsel i Stored Procedure MySQL

  3. Hvordan kan jeg sortere en 'Versionsnummer'-kolonne generisk ved hjælp af en SQL Server-forespørgsel

  4. Sådan får du alle data fra 2 tabeller ved hjælp af fremmednøgle