2016-05-25 17 views
5

Uso knexjs (senza scaffale) vorrei fare qualcosa di simile alla seguente query:Con knexjs, come faccio a confrontare due colonne nella funzione .where()? solo

select * from table1 where column1 < column2 

Tuttavia, quando faccio questo:

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

L'SQL che knexjs genera è:

select * from table1 where column1 < 'column2' 

Quale non dà il risultato desiderato b/c non sta confrontando il valore dalla colonna, sta confrontando il valore della stringa, 'column2'.

Qualcuno sa come fare quello che sto volendo? Grazie!

risposta

7

Ok, quindi dopo alcuni scavi, sembra che possa essere fatto questo modo. Non sono sicuro se questo è delle migliori pratiche, ma al momento, funziona così fino a quando ho sentito altrimenti ...

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

Anche in questo caso, non è l'ideale, ma si ottiene il lavoro fatto. Basta essere sicuri di

import knex from "knex"; 

nella parte superiore di qualsiasi file che si sta utilizzando questo.

+2

.whereRaw ("?? = ??", [ "Colonna1", "column2"]) funziona troppo –

Problemi correlati