iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > GO >gorm 有 OR 查询
  • 175
分享到

gorm 有 OR 查询

2024-04-04 23:04:45 175人浏览 安东尼
摘要

golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《gORM 有 OR 查询》带大家来了解一下##content_title##,希望对大

golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《gORM 有 OR 查询》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发


问题内容

我陷入了生成在运行时动态创建的查询的困境。

我想创建一个 having 查询,中间有 or,例如

select name from `user_group`  where ((group_key = 'age' and group_value = '20')) 

or ((group_key = 'division' and group_value = 'accounting')) 
or ((group_key = 'age' and group_value = '22')) 
or ((group_key = 'division' and group_value = 'kitchen'))

group_by name
having 
((sum(group_key = 'age' and group_value = '20') > 0) 
and 
(sum(group_key = 'division' and group_value = 'accounting') > 0))

or 

((sum(group_key = 'age' and group_value = '22') > 0) 
and 
(sum(group_key = 'division' and group_value = 'kitchen') > 0))

请注意,having 语句中的 or 就是我所要求的。

我目前通过 Gorm 得到了这个:

select name from `user_group`  where ((group_key = 'age' and group_value = '20')) 

or ((group_key = 'division' and group_value = 'accounting')) 
or ((group_key = 'age' and group_value = '22')) 
or ((group_key = 'division' and group_value = 'kitchen'))

group_by name
having 
((sum(group_key = 'age' and group_value = '20') > 0) 
and 
(sum(group_key = 'division' and group_value = 'accounting') > 0))

and 

((sum(group_key = 'age' and group_value = '22') > 0) 
and 
(sum(group_key = 'division' and group_value = 'kitchen') > 0))

注意 having 语句中的 and

这是查询生成:

for _, condition := range resp.Allow.Conditions {
    for key, val := range condition {
        if len(key) <= 0 || len(val) <= 0 {
            continue
        }
        groupQuery = groupQuery.Or("(group_key = ? AND group_value = ?)", key, val)
        groupQuery = groupQuery.Having("SUM(group_key = ? AND group_value = ?) > 0", key, val)
    }
}
groupQuery = groupQuery.Group('name')

gorm 中有什么方法可以做到这一点吗?我查看了文档,我最好的选择是它必须是原始 sql 查询。我不喜欢它,但如果这是唯一的方法也没关系。

注意:我使用 Mysql 作为方言


解决方案


该行的输出:

groupquery = groupquery.having("sum(group_key = ? and group_value = ?) > 0", key, val)

是块

((sum(group_key = 'age' and group_value = '20') > 0) 
and 
(sum(group_key = 'division' and group_value = 'accounting') > 0))

and 

((sum(group_key = 'age' and group_value = '22') > 0) 
and 
(sum(group_key = 'division' and group_value = 'kitchen') > 0))

这是正确的。查看每行的所有左括号和右括号:

````(cond1)和(cond2)和(cond3)和(cond4)````

要根据您的要求在having语句的中间获取一个或:

((sum(group_key = 'age' and group_value = '20') > 0) 
and 
(sum(group_key = 'division' and group_value = 'accounting') > 0))

and 

((sum(group_key = 'age' and group_value = '22') > 0) 
and 
(sum(group_key = 'division' and group_value = 'kitchen') > 0))

这将是:

(cond1) 与 (cond2) 或 (cond3) 与 cond(4)

会导致不太预期的结果。

更合乎逻辑的是:

(cond1) 或 (cond2) 或 (cond3) 或 cond(4)

或者:

((cond1)和(cond2))或((cond3)和cond(4))

最后一个版本(似乎是您的目标)无法按照规定在循环中生成,并且需要特定的方法。

看起来您几乎只能使用原始 sql。

到这里,我们也就讲完了《gorm 有 OR 查询》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注编程网公众号,带你了解更多关于的知识点!

您可能感兴趣的文档:

--结束END--

本文标题: gorm 有 OR 查询

本文链接: https://www.lsjlt.com/news/596028.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • gorm 有 OR 查询
    Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《gorm 有 OR 查询》带大家来了解一下##content_title##,希望对大...
    99+
    2024-04-04
  • 创建反向查询“有一个”关系 GORM
    php小编柚子为您介绍GORM中的反向查询。在GORM中,我们可以通过创建"有一个"关系来实现反向查询。通过这种方式,我们可以轻松地在关联的模型中获取相关联的模型的信息。这种关系的设置...
    99+
    2024-02-08
  • go-gorm 查询多位字段
    在PHP开发中,数据库操作是非常常见的任务。而在数据库操作中,查询多个字段是一种常见的需求。针对这一需求,go-gorm是一款强大的ORM库,可以帮助开发者快速、高效地查询多个字段。在...
    99+
    2024-02-09
  • golang gorm怎么实现get请求查询
    今天小编给大家分享一下golang gorm怎么实现get请求查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。案...
    99+
    2023-06-30
  • Gorm 查询自定义加入额外列
    今天编程网给大家带来了《Gorm 查询自定义加入额外列》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持...
    99+
    2024-04-04
  • gorm postgres 查询 json 数组中的元素
    gorm postgres 查询 json 数组中的元素是一个常见的需求,特别是在处理复杂的数据结构时。在使用 GORM 进行数据库查询时,我们可以通过一些技巧来实现这个目标。在本文中...
    99+
    2024-02-10
  • GORM 将查询文本转换为小写
    哈喽!今天心血来潮给大家带来了《GORM 将查询文本转换为小写》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章...
    99+
    2024-04-05
  • golang gorm实现get请求查询案例测试
    目录案例查询班级get请求查询学生get请求案例 package main import ( _ "github.com/go-sql-driver/mysql" "gi...
    99+
    2024-04-02
  • mybatis and和or的组合查询
    在mybatis中涉及到和、或者的查询需要注意,一招不慎,会导致查询出来的结果不准确。 究其原因,是and优先级高于or。凡是查询中涉及到or,需要将or 条件和与之并肩查询的条件用括号括起来。 来看错误的写法: select ...
    99+
    2023-09-05
    mybatis java mysql
  • JavaES(Elasticsearch)中的and和or查询
    Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数...
    99+
    2022-11-13
    ES and or 查询 ES 查询
  • 如何防止 GORM 使用先前查询中的参数
    你在学习Golang相关的知识吗?本文《如何防止 GORM 使用先前查询中的参数》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或...
    99+
    2024-04-04
  • MyBatis—利用MyBatis查询(查询所有,查询一行,条件查询)
    文章目录 1、查询所有2、查询详情(通过特定属性查询)3、多条件查询(1)接口参数列表三种表达方式(2)多条件查询(3)动态Sql(4)多条件动态查询(5)单条件动态查询 1、查询所有...
    99+
    2023-09-14
    java mysql 开发语言 database 数据库
  • mysql联合查询中and和or的使用
    这篇文章主要讲解了“mysql联合查询中and和or的使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql联合查询中and和or的使用”吧! 需求...
    99+
    2024-04-02
  • MyBatis中criteria的or(或查询)语法说明
    目录MyBatis criteria的or(或查询)语法example/criteria and or 查询MyBatis criteria的or(或查询)语法 其中 TInn...
    99+
    2024-04-02
  • MySQ中and和or查询的优先级是什么
    这篇文章给大家分享的是有关MySQ中and和or查询的优先级是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这个可能是容易被忽略的问题,首选我们要清楚:MySQL中,AND的执行优先级高于OR。也就是说,在没...
    99+
    2023-06-14
  • Jpa Specification如何实现and和or同时使用查询
    目录同时使用and和or的查询JPA 动态查询之AND、OR结合使用问题描述代码示例同时使用and和or的查询 UserServiceImpl 类,service实现类 impo...
    99+
    2024-04-02
  • GORM golang SQL 查询执行不区分大小写的搜索不起作用
    问题内容 我想在 Golang 中进行不区分大小写的搜索。我正在使用这个库。 我已尝试以下方法,但不起作用。 someId = "abc" model := abcModel{Id: ...
    99+
    2024-02-05
  • 使用 go-sqlmock 测试 gorm 问题,将查询与mock.ExpectQuery 和 regexp.QuoteMeta 进行比较
    在开发过程中,使用 go-sqlmock 来测试 gorm 的问题是一种常见的需求。go-sqlmock 是一个用于模拟数据库操作的工具,而 gorm 则是一个流行的 Go 语言 OR...
    99+
    2024-02-11
  • mysql or走索引加索引及慢查询的作用
    目录 前言一 概述二 实验表结构声明三 Mysql不走索引归类以及详细解析1. 查询条件在索引列上使用函数操作,或者运算的情况2. 查询条件字符串和数字之间的隐式转换3. ...
    99+
    2024-04-02
  • Jpa Specification怎么实现and和or同时使用查询
    这篇文章主要为大家展示了“Jpa Specification怎么实现and和or同时使用查询”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Jpa Specification怎...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作