2016-05-25 14 views
5

Korzystanie knexjs (bez regał) Chciałbym zrobić coś jak następujące zapytanie:W przypadku knexj, jak porównać dwie kolumny w funkcji .where()? tylko

select * from table1 where column1 < column2 

Jednak, kiedy to zrobić:

.table("table1").select().where("column1", "<", "column2") 

SQL że knexjs generuje to:

select * from table1 where column1 < 'column2' 

Który nie daje pożądanego wyniku b/c nie porównuje wartości z kolumny, porównuje wartość ciągu, "kolumna2".

Ktoś wie, jak robić to, co chcę? Dzięki!

Odpowiedz

7

OK, więc po pewnym kopaniu wygląda na to, że można to zrobić w ten sposób:. Nie wiem, czy to jest najlepsze praktyki, ale w tej chwili, to działa tak, aż słyszę inaczej ...

.table("table1").select().where("column1", "<", knex.raw("table1.column2")) 

Ponownie, nie jest idealny, ale dostaje zadanie. Tylko pamiętaj, aby

import knex from "knex"; 

na szczycie cokolwiek plik używasz tego w.

+2

.whereRaw ("?? = ??", [ "kolumna1", "column2"]) działa zbyt –