有一个看起来像这样的查询
q = 'select distinct t.uuid, t.tags
from tags as t
inner join tag_item ti on t.uuid = ti.item_id
inner join tag_words tw on ti.tag_id = tw.id
where tw.tag in (?) and ti.item_id in (?)'
如果我使用它工作正常err := s.db.QueryContext(ctx, &resp, q, p1, p2)
但我并不总是有p1
,p2
所以我希望能够很好地分开它。我试过这样的事情:
var resp []*models.TagRecord
q := s.db.ModelContext(ctx, &resp).ColumnExpr("distinct tags.uuid, tags.tags")
q = q.Join("inner join tag_item as ti").JoinOn("ti.item_id=tags.uuid")
if len(filters.UUIDs) != 0 {
q = q.JoinOn("ti.item_id IN (?)", pg.In(filters.UUIDs))
}
q = q.Join("inner join tag_words as tw").JoinOn("tw.id=ti.tag_id")
if len(filters.Tags) != 0 {
q = q.JoinOn("tw.tag IN (?)", pg.In(filters.Tags))
}
err := q.Select()
但我收到了这个错误:
错误 #42P01 对表“标签”的 FROM 子句条目的引用无效)
我做错了什么,我怎样才能做到这一点?