sql >> Databasteknik >  >> RDS >> Mysql

Hur man väljer data från MYSQL med LIMIT innehåller ett element med värde t.ex. 1

Använder UNION ALL och underfrågan hjälper dig att få ditt förväntade resultat.

Följande fråga hjälper dig i ditt fall:

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()

Vänligen hitta demo på db<>fiol

I min demo, Answer 04 är det korrekta svaret för fråge-id 1 , i resultatuppsättningen, Answer 04 returnerar alltid tillsammans med 2 andra svar i slumpmässig ordning.




  1. hur man skapar en lagrad procedur i Oracle som accepterar en rad parametrar

  2. Skriv en fil till SFTP med Oracle PL/SQL

  3. Sätt vald resultat i en ksh-variabel

  4. Oracle SQL jämför poster i en tabell