2016-07-19 9 views
-3

Angenommen, ich möchte 5000 Zeilen zufällig aus einem DB von 48000 Zeilen auswählen, aber ich möchte sicherstellen, dass 30 Zeilen (für die ich eindeutige IDs habe) Teil dieser Auswahl sind. Gibt es eine Möglichkeit, dies in MySQL zu tun?Verwenden von MySQL Wie kann ich eine große Gruppe auswählen, die eine kleinere Gruppe enthalten muss?

id, Frage, Antwort, die Kategorie, etc ...

+0

ja. Zeige ein Beispiel für Daten und das erwartete Ergebnis ... und die Abfrage, die du versucht hast zu schreiben. – scaisEdge

+0

Also, im Grunde willst du deine gewünschten 30 Zeilen auswählen und dann auch 4970 zufällige Zeilen auswählen? – eggyal

+1

Bitte lesen Sie [this (how to ask)] (http://stackoverflow.com/help/how-to-ask) und [this (mcve)] (http://stackoverflow.com/help/mcve) bevor Sie fragen, wie diese Ihnen helfen werden, mehr und bessere Antworten von der Gemeinschaft zu erhalten. – Bonatti

Antwort

0

Sie könnten die Datensätze wählen Sie ids haben zuerst in einen Platzhalter-Array für, wählen Sie dann die Balance RAND() verwenden.

SELECT * FROM table WHERE id IN (list_of_ids)// put this in array... 

SELECT * FROM table WHERE id NOT IN (list_of_ids) ORDER BY RAND() LIMIT 4970// put this in second array... 

$myResults = array_merge($array1, $array2); 

sollte die Leistung für eine Tabelle die Größe, die Sie ... beschreiben in Ordnung

Wie Bill angegeben Sie dies in einer Abfrage mit UNION tun könnte ...

SELECT * FROM table WHERE id IN (list_of_ids) 
UNION 
SELECT * FROM table WHERE id NOT IN (list_of_ids) ORDER BY RAND() LIMIT 4970 
Verwandte Themen