Fre*_*ors 5 sql postgresql union go go-pg
I\xe2\x80\x99m 使用 Golang、PostgreSQL 和 go-pg ( https://github.com/go-pg/pg )。
\n\n我需要这个查询:
\n\nWITH cte AS (\n SELECT\n "player"."id",\n "player"."created_at",\n "player"."note"\n FROM\n "players" AS "player"\n ORDER BY\n "amount" DESC,\n "id"\n LIMIT 5\n ) ( SELECT * FROM cte ) UNION ALL\n (\n SELECT\n "id",\n "created_at",\n CONCAT_WS ( \'|\', LAST_VALUE ( "created_at" ) OVER ( ), LAST_VALUE ( "id" ) OVER ( ) ) AS note\n FROM\n cte -- THIS IS CORRECT\n LIMIT 1\n )\nRun Code Online (Sandbox Code Playgroud)\n\n相反go-pg一直给我这个:
WITH "cte" AS (\n SELECT\n "player"."id",\n "player"."created_at",\n "player"."note"\n FROM\n "players" AS "player"\n ORDER BY\n "amount" DESC,\n "id"\n LIMIT 5\n ) ( SELECT * FROM "cte" ) UNION ALL\n (\n SELECT\n "id",\n "created_at",\n CONCAT_WS ( \'|\', LAST_VALUE ( "created_at" ) OVER ( ), LAST_VALUE ( "id" ) OVER ( ) ) AS note\n FROM\n "players" AS "player" -- THIS IS THE PROBLEM, I need "cte" here\n LIMIT 1\n )\nRun Code Online (Sandbox Code Playgroud)\n\n我正在使用这段代码:
\n\nvar players []*models.Player\n\nqueryAll := r.db.Model(&players).Limit(5)\nqueryNotes := r.db.Model((*models.Player)(nil)).ExcludeColumn("note").Limit(1)\n\nqueryNotes.ColumnExpr("CONCAT_WS ( \'|\', " + lastValues + " ) AS note")\n\nerr := queryAll.WrapWith("cte").Table("cte").UnionAll(queryNotes).Select(&players)\nRun Code Online (Sandbox Code Playgroud)\n\n我可以做什么来解决这个问题?
\n