如何通过比较SqlKorma(clojure)中的两个字段来制作where子句

时间:2015-01-11 17:13:41

标签: postgresql clojure korma

我使用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 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

我不确定这是否是一个有效的答案,但我建议看看Yesql:

https://github.com/krisajenkins/yesql

在大多数情况下,您不需要DSL来重复SQL已经完成的操作。

我以前经常与Korma合作,发现自己花了太多时间将SQL转换为Korma语法。