PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Query Rails 3:viene visualizzato un errore durante l'utilizzo di "select" con "order"

Puoi testare l'SQL con questo SQLFIDDLE .

Solo Sqlite e MySql supportano questo utilizzo, ma altri no.

Fare riferimento a questo documento postgresql .

Una limitazione di questa funzione è che una clausola ORDER BY che si applica al risultato di una clausola UNION, INTERSECT o EXCEPT può specificare solo il nome o il numero di una colonna di output, non un'espressione.

Nel tuo caso, non è necessario utilizzare uniq, tutti gli ID utente sono già distinti, quindi perché non provi questo:

User.order("email DESC").pluck(:id)

Supponendo che gli ID siano duplicati, potresti uniq by ruby ​​invece di DB.

User.order("email DESC").pluck(:id).uniq

Questo script non genererà mai sql con distinto. Questo uniq dopo il pluck è un Array#uniq metodo.