Sie könnten die SQL mit diesem SQLFIDDLE testen .
Nur Sqlite und MySql unterstützen diese Verwendung, andere nicht.
Siehe dieses Postgresql-Dokument .
Eine Einschränkung dieser Funktion besteht darin, dass eine ORDER BY-Klausel, die auf das Ergebnis einer UNION-, INTERSECT- oder EXCEPT-Klausel angewendet wird, nur einen Ausgabespaltennamen oder eine Ausgabespaltennummer angeben kann, keinen Ausdruck.
Für Ihren Fall ist es nicht erforderlich, uniq zu verwenden, alle Benutzer-IDs sind bereits unterschiedlich. Warum versuchen Sie es also nicht mit:
User.order("email DESC").pluck(:id)
Unter der Annahme, dass die IDs dupliziert werden, könnten Sie uniq by ruby anstelle von DB verwenden.
User.order("email DESC").pluck(:id).uniq
Dieses Skript wird niemals SQL mit „distinct“ generieren. Dieser uniq
after pluck ist ein Array#uniq
Methode.