sql >> Database teknologi >  >> RDS >> PostgreSQL

PG::InvalidColumnReference:FEJL:for SELECT DISTINCT skal ORDER BY-udtryk vises på den valgte liste

Du skal tilføje widget_steps.name til listen over valgte kolonner:

SELECT  DISTINCT "widgets".*, "widget_steps.name" FROM "widgets" INNER JOIN "widget_steps" ON "widget_steps"."widget_id" = "widgets"."id" INNER JOIN "widget_steps" "active_steps_widgets" ON "active_steps_widgets"."id" = "widgets"."active_widget_step_id" WHERE "widgets"."account_id" = 1 AND "widgets"."completed_at" IS NULL AND (("widgets"."sequential" = 't' AND "widget_steps"."assigned_to" = 5 AND "widget_steps"."id" = "widgets"."active_widget_step_id" AND "widget_steps"."completed_at" IS NULL) OR ("widgets"."sequential" = 'f' AND "widget_steps"."assigned_to" = 5 AND "widget_steps"."completed_at" IS NULL)) ORDER BY sequential DESC, widget_steps.name ASC LIMIT 10 OFFSET 0

Dette bør ikke ændre logikken i din forespørgsel og vil fungere fint.

I Rails kan du bruge select metode til at indstille liste over valgte kolonner:

Widget.select('"widgets".*, "widget_steps.name"')

Håber dette ville hjælpe.



  1. Slip unavngivne fremmednøgle i MySql

  2. MySql:hvordan man laver underforespørgsel og tæller alle rækker, hvor id er det samme i to tabeller

  3. Genopbygning af en MySQL 8.0-replikeringsslave ved hjælp af et klonplugin

  4. VÆLG * FRA flere tabeller. MySQL