PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Requête Rails 3:erreur lors de l'utilisation de 'select' avec 'order'

Vous pouvez tester le SQL avec ce SQLFIDDLE .

Seuls SQLite et MySql prennent en charge cette utilisation, mais pas les autres.

Reportez-vous à ce document postgresql .

Une limitation de cette fonctionnalité est qu'une clause ORDER BY s'appliquant au résultat d'une clause UNION, INTERSECT ou EXCEPT ne peut spécifier qu'un nom ou un numéro de colonne de sortie, pas une expression.

Dans votre cas, il n'est pas nécessaire d'utiliser uniq, tous les identifiants d'utilisateur sont déjà distincts, alors pourquoi ne pas essayer ceci :

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

En supposant que les identifiants soient dupliqués, vous pouvez uniq par ruby ​​au lieu de DB.

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

Ce script ne générera jamais sql avec distinct. Ce uniq après plumer est un Array#uniq méthode.