Как сделать предложение where при сравнении двух полей в SqlKorma (clojure)

Я использую Postgresql и sqlkorma 0.4.

CREATE TABLE mytable (id serial PRIMARY KEY, 
   a integer NOT NULL, b integer NOT NULL);

Как сделать:

SELECT * FROM mytable WHERE a > b

я пробовал

(defentity mytable
       (pk :id)
       (table :mytable))

а также

(select table mytable
  (fields :a :b)
  (where (> a b)))

но это не работает

2 ответа

Решение
(sql-only
  (select my-table (where {:a [> :b]})))
;; => "SELECT `my-table`.* FROM `my-table` WHERE (`my-table`.`a` > `my-table`.`b`)"

Я не уверен, если это правильный ответ, но я предлагаю посмотреть на Yesql:

https://github.com/krisajenkins/yesql

В большинстве случаев вам не нужен DSL, чтобы просто повторить то, что SQL уже сделал.

Я сам много работал с Korma и тратил слишком много времени на простую конвертацию SQL в синтаксис Korma, как этот.

Другие вопросы по тегам