PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Rails 3 Query:obtendo erro ao usar 'select' com 'order'


Você pode testar o SQL com este SQLFIDDLE .

Apenas SQLite e MySql suportam esse uso, mas outros não.

Consulte este documento postgresql .

Uma limitação desse recurso é que uma cláusula ORDER BY aplicada ao resultado de uma cláusula UNION, INTERSECT ou EXCEPT pode especificar apenas um nome ou número de coluna de saída, não uma expressão.

Para o seu caso, não há necessidade de usar uniq, todos os IDs de usuário já são distintos, então por que você não tenta isso:
User.order("email DESC").pluck(:id)

Supondo que os ids sejam duplicados, você pode uniq por ruby ​​em vez de DB.
User.order("email DESC").pluck(:id).uniq

Este script nunca irá gerar sql com distinct. Este uniq depois de arrancar é um Array#uniq método.