2017-10-18 238 views
3

我想知道如何使用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中。但似乎没有这种方法。有什么建议么?

回答

2

你可以使用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')));

+1

'QueryExpr'返回'* expr'。有关如何在'FROM'中插入该值的任何建议?此外,链接不起作用,因为文档中没有“子查询”部分。 –