登录
首页 >  Golang >  Go问答

Gorm查询中使用主表的别名

来源:stackoverflow

时间:2024-02-14 22:12:22 430浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《Gorm查询中使用主表的别名》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我有一个类似于以下内容的 gorm 查询:

db.
    table(fmt.sprintf("%s t", model.blogtag{}.tablename())).
    select(`
        t.id,
        t.path,
        t.title,
        t.hits,
        count(distinct b.id) as used_times
    `).
    joins("left join contentitem_tag_map bt on bt.tag_id = t.id").
    joins("left join content b on b.id = bt.content_item_id and b.state = 1").
    where("t.published = 1").
    group("t.id").
    order("used_times desc").
    find(&tags).error

生成的查询如下所示:

SELECT t.id, t.path, t.title, t.hits, COUNT(DISTINCT b.id) AS used_times
FROM `myschema`.`vk9wz_tags` 
LEFT JOIN myschema.vk9wz_contentitem_tag_map bt ON bt.tag_id = t.id 
LEFT JOIN myschema.vk9wz_content b ON b.id = bt.content_item_id AND b.state = 1 
WHERE t.published = 1 
GROUP BY `t`.`id` 
ORDER BY used_times DESC

我试图指定的别名 t 没有被 gorm 选择!因此 mysql 首先不理解 t 是什么。

据我所知,文档不包括如何指定表别名。

有什么方法可以避免在查询中使用全名吗?


正确答案


尝试使用:

db.Table(model.BlogTag{}.TableName() + " AS t")

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>