Możesz przetestować SQL za pomocą tego SQLFIDDLE .
Tylko Sqlite i MySql obsługują to użycie, ale inne nie.
Zapoznaj się z tym dokumentem postgresql .
Ograniczeniem tej funkcji jest to, że klauzula ORDER BY mająca zastosowanie do wyniku klauzuli UNION, INTERSECT lub EXCEPT może określać tylko nazwę lub numer kolumny wyjściowej, a nie wyrażenie.
W twoim przypadku nie ma potrzeby używania uniq, wszystkie identyfikatory użytkownika są już różne, więc dlaczego nie spróbować tego:
User.order("email DESC").pluck(:id)
Zakładając, że identyfikatory są zduplikowane, można by uniknąć uniq przez ruby zamiast DB.
User.order("email DESC").pluck(:id).uniq
Ten skrypt nigdy nie wygeneruje sql z odrębnym. Ten uniq
po szarpnięciu jest Array#uniq
metoda.