在gorm的'FROM'中使用子查询
问题描述:
我想知道如何使用gorm在FROM子句中使用子查询。它看起来像下面这样:在gorm的'FROM'中使用子查询
SELECT * FROM
(
SELECT foo.*
FROM foo
WHERE bar = "baz"
) AS t1
WHERE t1.id = 1;
我已经建立了使用golang子查询:
db.Model(Foo{}).Where("bar = ?", "baz")
但我怎么可以用这个作为FROM
子查询?
如果有一种将gorm查询转换为SQL字符串的方法,那么我可以简单地将该字符串插入到原始SQL中。但似乎没有这种方法。有什么建议么?
答
你可以使用QueryExpr
,请参阅
http://jinzhu.me/gorm/crud.html#subquery
db.Where( “量>?”, DB.Table( “订单”),选择( “AVG(量)”) 。哪里( “状态=?”, “支付”)QueryExpr。())。查找(&订单)
其中生成SQL
SELECT * FROM“orders”WHERE“orders”。“deleted_at”IS NULL AND (amount>(SELECT AVG(amount)FROM“orders”WHERE(state ='paid')));
'QueryExpr'返回'* expr'。有关如何在'FROM'中插入该值的任何建议?此外,链接不起作用,因为文档中没有“子查询”部分。 –