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

Sådan vælger du data fra MYSQL med LIMIT indeholder et element med værdi f.eks. 1

Brug af UNION ALL og underforespørgsel vil hjælpe med at få dit forventede resultat.

Følgende forespørgsel vil hjælpe i dit tilfælde:

SELECT Answer FROM (
    SELECT * FROM (
        SELECT Answer, 1 AS ManualOrder FROM Answers WHERE Correct = 'true' AND QId = 1
        UNION ALL
        SELECT Answer, RAND() FROM Answers WHERE Correct != 'true' AND QId = 1 
    ) AS Q 
    ORDER BY ManualOrder DESC LIMIT 3
) W ORDER BY RAND()

Find demo på db<>fiddle

I min demo, Answer 04 er det rigtige svar på spørgsmåls-id'et 1 , i resultatsættet, Answer 04 er altid tilbage sammen med 2 andre svar i tilfældig rækkefølge.




  1. Hvorfor modtager jeg Null fra denne lagrede procedure?

  2. Sammenkæd en streng og et tal i MySQL

  3. SQL Server SMO klager over manglende DLL

  4. Hvorfor vil denne slags ikke virke i Solr?