Ciao ragazzi io sono confuso con una cosaOrdina per rand() in yii2
Voglio scrivere query seguente in yii2
ma io non sono in grado di ottenere i risultati attesi
SELECT * FROM user where category_id=5 ORDER BY rand() LIMIT 4
per questo ho hanno fatto seguito
$data= User::find()->where(['category_id'=> 5])->orderBy(['rand()'])->limit(4);
ma genera il comando come segue
SELECT * FROM `user` WHERE `category_id`=5 ORDER BY `0` LIMIT 4
Quale non è un'istruzione mysql valida, quindi cosa dovrei fare per ottenere la query giusta?
Il mio obiettivo è ottenere 4 record casuali dalla tabella user
.
A meno che non non preoccuparti delle prestazioni, mai ordinare da 'rand()'. È [terribilmente inefficiente] (https://www.warpconduit.net/2011/03/23/selecting-a-random-record-using-mysql-benchmark-results/). – Beowulfenator
@Beowulfenator capito grazie. Ho usato il metodo nella conclusione su quell'articolo. –
Leggi l'articolo. Ci sono diverse soluzioni lì e un grafico che mostra come si comportano su diversi set di dati. Non è rilevante quanti record devi trovare, è più importante quante voci totali hai nella tabella. – Beowulfenator