大家好

最近有在用 django的ORM資料庫操作
但是有些情況
例如我需要在select上面寫SQL的算式
就需要使用直接插入查詢字串extra方式來達成
最常見就是判斷式
或是一些最大最小值之類

參考:
django查询中extra的应用
https://blog.csdn.net/weixin_42143550/article/details/88955477

 

所以這邊舉一個小例子給大家參考看看

#新增一個query物件
TestTableQ = TestTable.objects.all()
#子查詢
intSql = ' SELECT id FROM XXX INNER JOIN TestTable2 AS tnt '
#針對select寫查詢條件 newName 是變數名稱,後面接的是判斷式(這判斷式如果要用ORM加上去比較麻煩,所以這時候就需要用extra)
TestTableQ = TestTableQ.extra(select={'newName':" CASE WHEN leftE < rightE THEN leftE ELSE rightE END "})
#針對where插入子查詢
TestTableQ = TestTableQ.extra(where = [' id IN ( '+intSql+' ) '])

感謝大家