sql - SQL WHERE 列 = 一切(使用 Active Record)
问题描述
在 SQL 中,当条件列表 (WHERE) 事先不知道但在代码执行时构建时,您可以创建动态 SQL 语句。所以有时我想要一个记录子集(比如与数组匹配的 id),但在其他情况下,我不希望应用条件(因此返回整个列表)。
在纯 SQL 中有这个解决方案:Stackoverflow: SQL WHERE column = all
SELECT * FROM table WHERE id = id
更多信息:Stackoverflow:为什么有人会在 SQL 子句中使用 WHERE 1=1 AND?
我将如何使用 Active Record 中的 DSL 来做到这一点?
解决方案
Rails 中的链接where
子句非常简单
dataset = User.all
dataset = dataset.where(name: "John") if filter_name?
dataset = dataset.where("age > ?", 20) if filter_age?
dataset
推荐阅读
- c# - Smartsheet API 下拉列表
- html - HTML 5标签不下载文件但打开一个新页面
- java - 确定 arraylist2 的输入是否存在于 arraylist1 中,因为它们被放入
- javascript - CSS/JS - 如果单词对于容器来说太长,则覆盖字体大小
- python - 在没有应用的情况下计算熊猫的条纹
- amazon-iam - 使用现有 S3 存储桶触发 Lambda 函数时如何避免授予 `iam:CreateRole` 权限?
- django - 无法让 django heroku 正常运行。如何解决错误代码=H14 desc="No web processes running"?
- javascript - 在云功能中解析表单数据 zip 文件
- java - 处理 Android Java 应用程序中 Drive Rest API 的错误
- python - flask - If-else 仅输出“if”条件