Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So wählen Sie Daten aus MYSQL mit LIMIT aus enthält ein Element mit Wert, z. 1

Mit UNION ALL und Unterabfrage helfen, das erwartete Ergebnis zu erhalten.

Folgende Abfrage hilft in Ihrem Fall weiter:

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

Bitte finden Sie Demo auf db<>fiddle

In meiner Demo Answer 04 ist die richtige Antwort für die Frage-ID 1 , in der Ergebnismenge Answer 04 wird immer zusammen mit 2 anderen Antworten in zufälliger Reihenfolge zurückgegeben.