Du kan teste SQL'en med denne SQLFIDDLE .
Kun Sqlite og MySql understøtter denne brug, men andre gør ikke.
Se dette postgresql-dokument .
En begrænsning ved denne funktion er, at et ORDER BY-udtryk, der gælder for resultatet af et UNION-, INTERSECT- eller EXCEPT-udtryk, kun kan angive et outputkolonnenavn eller -nummer, ikke et udtryk.
I dit tilfælde er der ikke behov for at bruge uniq, alle bruger-id'er er allerede forskellige, så hvorfor prøver du ikke dette:
User.order("email DESC").pluck(:id)
Forudsat at id'erne er duplikeret, kan du uniq ved ruby i stedet for DB.
User.order("email DESC").pluck(:id).uniq
Dette script vil aldrig generere sql med distinkt. Denne uniq
efter pluk er en Array#uniq
metode.