首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kohana 3 ORM比较where子句中的2列

Kohana 3是一个基于PHP的Web应用程序开发框架,它提供了一个简单、灵活的ORM(对象关系映射)系统,用于将数据库表映射到PHP对象。在Kohana 3中,ORM的where子句可以用来过滤查询结果,并且可以在同一个查询中比较两列。

在Kohana 3中,可以使用以下方法来比较两列:

代码语言:php
复制
$users = ORM::factory('user')
    ->where('column1', '=', DB::expr('column2'))
    ->find_all();

在这个例子中,我们使用了DB::expr()方法来创建一个表达式,该表达式将column2作为一个字符串传递给where()方法,并且使用=运算符将column1column2进行比较。

需要注意的是,这种方法可能存在SQL注入的风险,因此需要确保column2是一个安全的值,或者使用其他方法来避免SQL注入的风险。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Studio 3T中的新功能:支持SQL SELECT DISTINCT,WHERE子句中的JSON对象及更多

Studio 3T的2019年第一个版本侧重于对SQL Query的改进,这是您最常用的功能之一,此外还有其他用户请求的UX优化: 添加了SELECT DISTINCT支持 使用JSON对象的WHERE...子句中的扩展SQL语法 能够在更改字段类型时保留值 更好的入门功能建立在功能和新的交互之上 SQL查询|支持SQL SELECT DISTINCT 我们已将SQL SELECT DISTINCT添加到支持的...SQL查询| WHERE子句中的JSON对象 除了SELECT DISTINCT之外,您现在还可以通过两种方式在SQL WHERE子句中使用JSON对象: WHERE JSONor WHERE identifier...“编辑值”对话框应在可以打开的位置打开 1.更改字段类型 2.保留或更改当前检测到的值 3.设置值 如果无法进行自动转换,Studio 3T将要求提供默认值(请参阅上面的后备值)。...下载Studio 3T 2019.1 如果您已经安装了Studio 3T,只需更新应用内(如果您没有启用自动更新程序),或在此处下载最新版本: 尝试Studio 3T 2019.1 译者 ?

3.5K20
  • SqlAlchemy 2.0 中文文档(十五)

    批量插入语句中发送 NULL 值 连接表继承的批量插入 使用 SQL 表达式的 ORM 批量插入 遗留会话批量插入方法 ORM“upsert”语句 按主键进行 ORM 批量更新...ORM 实体可以使用Select.from_statement()方法从简单的复合选择中选择,该方法如在从文本语句中获取 ORM 结果中所示。...ORM 实体可以使用 Select.from_statement() 方法从简单的复合选择中选择,如前面在从文本语句中获取 ORM 结果中所示。...从文本语句中获取 ORM 结果 对象关系映射(ORM)支持从其他来源的 SELECT 语句加载实体。典型用例是文本 SELECT 语句,在 SQLAlchemy 中使用text()结构表示。...ORM 实体可以通过简单的复合选择使用 Select.from_statement() 方法进行选择,该方法在 从文本语句中获取 ORM 结果 中已经说明。

    26110

    SqlAlchemy 2.0 中文文档(十八)

    如果在 select() 中使用,而后将其用作子查询或作为复合语句中的元素,如 UNION,它将不起作用。 要在子查询中使用任意 SQL 表达式,应使用常规的 Core 风格添加表达式的方法。...要将子查询派生的表达式组装到 ORM 实体的 query_expression() 属性上,应在 ORM 对象加载的顶层使用 with_expression(),引用子查询中的 SQL 表达式。...要将子查询派生的表达式组装到 ORM 实体的query_expression()属性上,需要在 ORM 对象加载的顶层使用with_expression(),引用子查询中的 SQL 表达式。...如果在将用作子查询或作为联合等复合语句中的元素的`select()`内部使用,则不会产生任何效果。 为了在子查询中使用任意的 SQL 表达式,应该使用正常的 Core 风格添加表达式的方法。...要将子查询派生的表达式组装到 ORM 实体的`query_expression()`属性上,需要在 ORM 对象加载的顶层使用`with_expression()`,引用子查询中的 SQL 表达式。

    27810

    SqlAlchemy 2.0 中文文档(二十)

    AliasedClass的一个主要目的是在 ORM 生成的 SQL 语句中作为一个替代,以便在多个上下文中使用现有映射实体。...如果省略contains_eager()选项,则 SQL 与 FROM 和 WHERE 子句的行为相同,其中with_loader_criteria()继续将其条件添加到 JOIN 的 ON 子句中。...如果省略了contains_eager()选项,那么 SQL 在 FROM 和 WHERE 子句方面的情况将与with_loader_criteria()继续将其条件添加到 JOIN 的 ON 子句中一样...如果省略contains_eager()选项,则 SQL 将与 FROM 和 WHERE 子句相关,而with_loader_criteria()将继续将其条件添加到 JOIN 的 ON 子句中。...如果省略了 contains_eager() 选项,则 SQL 将与 FROM 和 WHERE 子句相同,其中 with_loader_criteria() 继续将其条件添加到 JOIN 的 ON 子句中

    32510

    SqlAlchemy 2.0 中文文档(十七)

    ### 在 ORM 批量 INSERT 语句中发送 NULL 值 批量 ORM 插入功能利用了遗留“批量”插入行为以及总体 ORM 工作单元中存在的行为,即包含 NULL 值的行使用不引用这些列的语句进行...'evaluate' - 这表示在 Python 中评估 UPDATE 或 DELETE 语句中给定的 WHERE 条件,以定位Session中的匹配对象。...### 在 ORM 批量 INSERT 语句中发送 NULL 值 批量 ORM 插入功能借鉴了遗留的“批量”插入行为,以及 ORM 工作单元总体上的行为,即包含 NULL 值的行将使用不引用这些列的语句进行插入...在 ORM 批量 INSERT 语句中发送 NULL 值 批量 ORM 插入功能利用了在传统“批量”插入行为以及整体 ORM 工作单元中也存在的行为,即包含 NULL 值的行将使用不引用这些列的语句进行...这种操作模式对于在每行基础上传递 SQL 表达式的情况可能很有用,并且在使用 ORM 时使用“upsert”语句时也会使用,后文将在本章的 ORM“upsert”语句中进行说明。

    40410

    Beego models之三使用SQL语句进行查询构造查询

    当然,如果你对sql比较熟悉,你会发现orm有时候没有原生sql来的灵活,下面介绍beego的原生sql。 使用 Raw SQL 查询,无需使用 ORM 表定义 多数据库,都可直接使用占位符号 ?...,自动转换,可以防止sql注入 查询时的参数,支持使用 Model Struct 和 Slice, Array ids := []int{1, 2, 3} p.Raw("SELECT name FROM...Values, ValuesList, ValuesFlat 的参数,可以指定返回哪些 Columns 的数据 通常情况下,是无需指定的,因为 sql 语句中你可以自行设置 SELECT 的字段...Values 返回结果集的 key => value 值 var maps []orm.Params num, err := o.Raw("SELECT user_name FROM user WHERE...ORM 更适用于简单的 CRUD 操作,而 QueryBuilder 则更适用于复杂的查询,例如查询中包含子查询和多重联结。

    2.9K30

    SqlAlchemy 2.0 中文文档(七十二)

    SQLAlchemy 在其示例中包含一个性能套件,我们可以比较“batch_inserts”运行程序在 1.3 和 1.4 中生成的时间,显示大多数批量插入的速度提升了 3 倍至 5 倍: # 1.3...将一个 SELECT 包含在另一个 SELECT 的 FROM 子句中,而不先创建别名或子查询的行为会导致创建一个未命名的子查询。虽然标准 SQL 支持此语法,但实际上大多数数据库都会拒绝它。...在另一个 SELECT 的 FROM 子句中包含一个 SELECT 的行为,而不先创建别名或子查询,会导致创建一个无名称的子查询。虽然标准 SQL 支持这种语法,但实际上大多数数据库都会拒绝。...SQLAlchemy 在其示例中包含一个性能套件,在这里我们可以比较“batch_inserts”运行程序在 1.3 和 1.4 版本中生成的时间,显示大多数批量插入的速度提升了 3 倍至 5 倍: #...SQLAlchemy 在其示例中包含了一个性能套件,在这里我们可以将“batch_inserts”运行程序生成的时间与 1.3 和 1.4 进行比较,对大多数批量插入的变体显示出 3 倍至 5 倍的加速

    87310

    SqlAlchemy 2.0 中文文档(二十一)

    注意 ORM 级别的 distinct() 调用包含逻辑,将自动将查询的 ORDER BY 中的列添加到 SELECT 语句的列子句中,以满足数据库后端的常见需求,即在使用 DISTINCT 时,ORDER...method exists() → Exists 一个方便的方法,将查询转换为形式为 EXISTS(SELECT 1 FROM … WHERE …)的 EXISTS 子查询。...users.name = :name_1 ) AS anon_1 EXISTS 构造通常用于 WHERE 子句中: session.query(User.id).filter(q.exists())....注意 ORM 级别的distinct()调用包括逻辑,将查询的 ORDER BY 中的列自动添加到 SELECT 语句的列子句中,以满足数据库后端的常见需求,即使用 DISTINCT 时,ORDER BY...method exists() → Exists 一个方便的方法,将查询转换为 EXISTS 子查询的形式 EXISTS (SELECT 1 FROM … WHERE …)。

    57410

    50多条实用mysql数据库优化建议

    num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询: Sql 代码 : select id from t where num=0; 3.应尽量避免在 where 子句中使用...: select id from t where num between 1 and 3; 6.下面的查询也将导致全表扫描: Sql 代码 : select id from t where name...where 子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。...id from t where name like 'abc%'; 10.不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用 索引。...拆开的子 句中应该包含索引。 》、尽量少用 CLOB、TEXT、BLOB大类型 》、如果你的数据只有你所知的少量的几个。最好使用 ENUM 类型 ENUM 类型是非常快和紧凑的。

    4K60

    手把手带你从0搭建一个Golang ORM框架(上)!

    然后,整个调用过程采用链式的方法,这样比较方便,比如这样子 db.Where().Where().Order().Limit().Select() 其次,暴露的CURD方法,使用起来要简单,名字要清晰...(user2).OrWhere(user3).SelectOne() 二、开始造 (一)连接Connect 连接MySQL比较简单,直接把原生的sql.Open(“mysql”, dsn)方法套一个函数壳即可...(四)条件Where 结构体参数调用 下面,我们开始实现Where方法的逻辑,这个where主要是为了替换sql语句中where后面这部分的逻辑,sql语句中where用的还是非常多的,比如原生sql...大部分的ORM也是这样做的。 通过观察上面3句sql,我们可以得出基本的where的结构,要么只有1个条件,这个条件的比较复符是丰富的,比如:=, !=, like,等等。...对比传入结构体的方式更简单:方法有3个参数,第一个是需要查询的字段,第2个是比较符,第三个是查询的值。

    75510

    ORM查询语言(OQL)简介--高级篇(续):庐山真貌

    注意:图上的表达式中的形参 parent 其实是OQL对象,这里表示父级OQL对象,它参与构造它的子OQL对象。 (图4:高级子查询) ?...3.2,Where迷途—委托神器 3.2.1,最简单的Where条件比较方法     OQL的Where 条件构造支持最简单的使用方式,如果查询条件都是“相等比较”方式,那么可以使用下面的方式:...4.3,GroupBy约束     OQL会严格按照SQL的标准,检查在查询使用了GroupBy子句的时候,Select中的字段是否包含在GroupBy子句中,如果不包含,那么会抛出错误结果。...动态条件查询的信息,请参考这篇文章《左求值表达式,堆栈,调试陷阱与ORM查询语言的设计》 4.8,IN 条件子查询     下面的例子使用一个child 的OQL实例作为q的OQL实例的子对象,构造了一...而子查询最后作为OQLCompare对象的条件比较方法的参数传入,即下面代码中的           cmp.Comparer(user.RoleID, "=", childFunc)     下面是详细代码

    2.3K90

    SqlAlchemy 2.0 中文文档(三十六)

    Self 继承自 DMLWhereBase.where() 方法的 DMLWhereBase 返回一个新构造,其中给定的表达式已添加到其 WHERE 子句中,如果有的话,通过 AND 连接到现有子句。...当使用 ORM 时,此属性通常很有用,因为它返回了一个扩展的结构,其中包含有关映射实体的信息。有关更多背景信息,请参阅 从 ORM 启用的 SELECT 和 DML 语句中检查实体和列。...当使用 ORM 时,此属性通常很有用,因为返回的扩展结构包含有关映射实体的信息。该部分 从 ORM 启用的 SELECT 和 DML 语句中检查实体和列 包含更多背景信息。...当使用 ORM 时,此属性通常很有用,因为它返回一个扩展结构,其中包含有关映射实体的信息。从 ORM 启用的 SELECT 和 DML 语句中检查实体和列部分提供了更多背景信息。...(请注意,子查询通常应使用Select.alias()方法创建,因为许多平台要求嵌套的 SELECT 语句具有名称)。

    40410

    SqlAlchemy 2.0 中文文档(七十八)

    FROM 子句中省略“相关”的目标。...#2590 不再将“=”自动转换为 IN,当与 MS-SQL 中的子查询进行比较时 我们在 MSSQL 方言中发现了一个非常古老的行为,当用户尝试执行类似以下操作时,它会试图拯救用户: scalar_subq...#2590 不再将“=”自动转换为 IN,用于与 MS-SQL 中的子查询进行比较 我们在 MSSQL 方言中发现了一个非常古老的行为,当用户执行类似以下操作时,它会试图拯救用户: scalar_subq...,从 FROM 子句中省略“相关”的目标。...#2590 不再将“=”在 MS-SQL 中与子查询比较时自动转换为 IN 我们在 MSSQL 方言中发现了一个非常古老的行为,当用户尝试做类似这样的事情时,它会试图拯救用户: scalar_subq

    15410

    SqlAlchemy 2.0 中文文档(十三)

    ] (3,) COMMIT 与任何 ORM 映射的集合一样,对象的删除可以按照解除与集合的关联并将对象保留在数据库中的方式进行,也可以根据relationship()的 delete-orphan....> 上述语句自动使用“UPDATE…FROM”语法,由 SQLite 和其他后端支持,在 WHERE 子句中命名附加的audit_transaction表。....> 上述语句自动使用了“UPDATE…FROM”语法,该语法由 SQLite 和其他数据库支持,以在 WHERE 子句中命名额外的audit_transaction表。....> 上面的语句自动使用了“UPDATE…FROM”语法,由 SQLite 和其他后端支持,在 WHERE 子句中命名附加的audit_transaction表。....> 上述语句自动使用“UPDATE…FROM”语法,在 SQLite 和其他支持的数据库中,在 WHERE 子句中命名附加的audit_transaction表。

    22210
    领券