Sub-Abfrage in Knex

Ich bin auf der Suche im wesentlichen machen diese Art der Abfrage in Knex, aber ich kann es nicht ganz verstanden, um zu arbeiten:

select distinct *
from
(
  select *, 1 as rank from table1 where Word like 'mike'
  union
  select *, 2 as rank from table1 where Word like 'mike%'
  union
  select *, 3 as rank from table1 where Word like '%mike%'
) as X
order by WordOrder

Bemerkte ich ein ähnliches Problem hier und versucht, Ihrem Rat zu Folgen, aber kann nicht scheinen zu erkennen, meine Fehler (oder ob dies überhaupt der richtige Weg, dies zu tun in den ersten Platz).

var q = DB.knex('Users').select("*", "1 as rank").where("User", "like", query).
    union(function() {
        this.select("*", "2 as rank").where("User", "like", query + "%")
    }).
    union(function() {
        this.select("*", "3 as rank").where("User", "like", query + "%")
    });

DB.knex("Users").distinct("*").from('(' + q.toString() + ') as X').
    orderBy('rank').select().then(...)

Wenn es keine Hilfe, dass bestimmte Abfrage erzeugt die folgende Fehlermeldung:

Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1`` order by `rank` asc' at line 1, sql: select distinct * from `select` as ``1`` order by `rank` asc, bindings: 

InformationsquelleAutor Salem | 2014-03-26

Schreibe einen Kommentar