使用 MySQL 将一个值与表中的多个列(在一个语句中)进行匹配

2024-04-23

我正在使用 MySQL 中的一个表,其中包含以下列:

id, january, february, march, april, etc

表中的数据如下所示:

aa, 0, 0, 1, 0
ab, 1, 0, 1, 0
ac, 1, 1, 0, 0
ad, 1, 1, 1, 0

要查询它,我可以轻松地执行以下操作:

select * from table where january = 1 and february = 1

结果将是:

ac, 1, 1, 0, 0
ad, 1, 1, 1, 0

我想知道是否有办法做到这一点:

select * from table where table.columns = 1

我想在表达式中使用表列,而无需实际手动指定名称(将其键入)。

奖励 (+1) 问题:
是否可以使用 Match/Against 来完成,如下所示:

select * from table
where
(
    match (somehow,get,the,table,columns,I,need,here)
    against (1 in boolean mode)
)

谢谢你的时间! :)


你必须使用Prepared Statement,因为你想要做的事情只能用动态SQL来完成:

SET @stmt = 'SELECT * FROM YOUR_TABLE WHERE 1 = 1 '
SET @stmt = CONCAT(@stmt, (SELECT CONCAT_WS(' AND ', CONCAT(column_name, ' = 1 '))
                            FROM INFORMATION_SCHEMA.COLUMNS
                           WHERE table_name = 'YOUR_TABLE'
                             AND table_schema = 'db_name'
                             AND column_name NOT IN ('id'))); 

PREPARE stmt FROM @stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

第一个 SET 语句构造了一个基本的 SELECT 语句; “1 = 1”部分只是为了更容易连接“AND column = 1"

第二个 SET 语句将查询的内容连接到第一个 SET 语句中的字符串末尾,以根据表名获取列列表。这个想法是这样的:

SELECT CONCAT_WS(' AND ', CONCAT(column_name, ' = 1 '))
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_name = 'YOUR_TABLE'
   AND table_schema = 'db_name'
   AND column_name NOT IN ('id')

...将返回类似于“的行AND january = 1 AND february = 1 ...“。如果 WHERE 子句中存在您不需要的其他列,则必须更新 NOT IN 子句。

其余的只是标准的准备好的语句内容,这一切都必须在存储过程中进行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MySQL 将一个值与表中的多个列(在一个语句中)进行匹配 的相关文章

  • Python Peeweeexecute_sql() 示例

    我使用 Peewee 模块作为我的项目的 ORM 我看了整个文档 没有明确的 有关如何处理 db execute sql 结果的示例 我跟踪代码 只能发现db execute sql 返回游标 有谁知道如何处理光标 例如迭代它并获取 返回复
  • MongoDB 聚合查询与 MySQL SELECT field1 FROM 表

    我对 MongoDB 完全陌生 想要比较 NoSQL 数据模型相对于关系数据库对应部分的查询性能 我将其写入 MongoDB shell Make 10 businesses Each business has 10 locations E
  • 使用 MOVE 确定 DB RESTORE 的 SQL 数据路径

    我正在尝试编写一个自动恢复数据库备份的脚本 我知道我可以使用以下 RESTORE 命令 RESTORE DATABASE DBRestoredName FROM DISK N C path to backup bak WITH FILE 1
  • 总小时数无法从 Android 插入 MySQL

    我使用以下公式获得总小时数 public void updateTotalHours int a SplitTime objMyCustomBaseAdapter getFistTime int b SplitTime objMyCusto
  • 数据库表可以没有主键吗?

    谁能告诉我关系数据库 例如MySQL SQL SERVER 中的表是否可以没有主键 例如 我可以有桌子day temperature 我注册的地方temperature and time 我不明白为什么要为这样的表设置主键 从技术上讲 您可
  • 如何使用过程填充数据库

    我有大约 15 个不同的表 其中填充了不同的数据和不同的实体关系 我需要创建一个脚本 用这些表的内容填充我的数据库 脚本完成后 我使用 sqlplus 在 cmd 中运行它 然后使用 START文件路径 我有两个不同的 sql 文件 一个名
  • 如何使用索引优化 InnoDB 上的 COUNT(*) 性能

    我有一个较大但狭窄的 InnoDB 表 有大约 9m 条记录 正在做count or count id 桌子上的速度非常慢 6秒以上 DROP TABLE IF EXISTS perf2 CREATE TABLE perf2 id int
  • 在 SQL 中将 CSV 字段拆分为不同的行

    我的一位同事在做COBOL程序时遇到了这个问题 最终在应用程序层面解决了它 我仍然很好奇是否可以使用 SQL 在数据访问级别上解决它 这在某种程度上与这另一个问题 https stackoverflow com questions 2903
  • 查询计算不同值的数量?

    我在 MS Access 2003 中有一个表 如下所示 url id example com red example com blue example com blue other com red other com orange mor
  • Case 表达式在 SQL 查询中无法正常工作

    我想连接列supplier使用逗号分隔符创建表并将其放入名为 contact 的别名字段中 我使用过检查空值的案例 假设如果contact number2则为空contact number3将在别名字段中 反之亦然 这是我的查询 SELEC
  • 如何比较具有复合主键的 2 个表中的行?

    这是场景 我有两张数据表 一张是2009年版本 一张是2010年版本 每个表的主键都是复合键 我知道每一行都有不同的行数 我需要找出差异 通常 在 正常 主键设置中 我只会查找不在其他表的主键列表中的主键值 但我不知道如何使用复合主键来做到
  • 如何在mysql工作台中打开多个模型/数据库

    我有两个型号 1 Server Model conneted to remote database which is stored on server 2 Local Host connected to my pc database is
  • 查找某个字段发生更改时的开始日期和结束日期

    我在表中有这些数据 FIELD A FIELD B FIELD D 249052903 10 15 2011 N 249052903 11 15 2011 P VALUE CHANGED 249052903 12 15 2011 P 249
  • 将 CSV 文件导入 MySQL 数据库时出现无效的 UTF-8 字符串

    我正在尝试使用以下代码将 CSV 导入我的 MySQL 数据库 我从帖子中获取了 CSV 文件
  • TSQL 多列唯一约束也允许多个 Null

    我目前正在做一些从 MS Access 到 SQL Server 的迁移 Access 允许唯一索引中存在多个 Null 而 SQL Server 不允许 我一直在通过删除 SQL Server 中的索引并添加筛选索引来处理迁移 CREAT
  • PhpStorm Docker PHPUnit 数据库

    I setup https blog jetbrains com phpstorm 2016 11 docker remote interpreters PhpStorm PHP PHPUnit 与 Docker 我在 PhpStorm 数
  • MySQL 中复制一条记录

    我有一个表 我想复制表中的特定行 我知道这不是最好的方法 但我们正在寻找快速解决方案 这比我最初想象的要难 我需要做的就是将整个记录复制到 MySql 中自动增量表中的新记录 而不需要指定每个字段 这是因为该表将来可能会发生变化 并且可能会
  • MySQL 查询 - 使用 ORDER BY rand( ) 强制区分大小写

    是否可以强制查询区分大小写 我的听起来是这样的 SELECT g path FROM glyphs WHERE g glyph g glyph ORDER BY rand 如果 g glyph r 结果可以是 R 或 r 这不是我所期望的
  • 选择当前项目 id 周围的 N 个上一个项目和 M 个下一个项目

    我有一张有照片的桌子 id year comm count 0 2015 1 1 2016 2 2 2017 5 3 2018 7 4 2019 1 5 2020 9 6 2021 1 7 2022 1 我选择具有给定 ID 的照片 位于所
  • SQL Server 中的循环行

    我有一个包含 2 列的 SQL Server 表 Code 和 CodeDesc 我想使用 T SQL 循环遍历行并打印 CodeDesc 的每个字符 怎么做 如果您确实想循环遍历行 则需要光标 CURSOR http msdn micro

随机推荐

  • 隐藏滚动时从底部开始的 UIView

    我有一个tableView我想隐藏UIView当用户向下滚动时位于其上方 目前 滚动隐藏UIView从上到下 我怎样才能隐藏UIView from 自下而上 如下例所示 这有点麻烦 但可能是最简单的方法 在故事板中 将UIView在顶部 我
  • iPhone 5 的 iOS 模拟器 - 1136 x 640 分辨率 [重复]

    这个问题在这里已经有答案了 可能的重复 如何测试 iPhone 5 的应用程序 https stackoverflow com questions 12434011 how to test apps for iphone 5 在 xcode
  • 如何使用 Access-Control-Allow-Origin:https://www.example.com?

    我想从 HTTP 网页进行 HTTPS 调用 我希望解决这个问题Access Control Allow Origin 我该如何使用它 在 HTTPS 页面 您从 HTTP 页面请求 上设置标头 访问控制允许来源 http www exam
  • 如何从内核空间读取/写入 linux /proc 文件?

    我正在编写一个由用户程序和内核模块组成的程序 内核模块需要收集数据 然后将其 发送 到用户程序 这必须通过 proc 文件来完成 现在 我创建了文件 一切都很好 并且花了很长时间在互联网上寻找答案 但仍然找不到 如何读 写 proc 文件f
  • 如何使用 jQuery 在 ASP.NET MVC 中重新加载带有部分视图的 div?

    我有一个 div 其部分位于页面的某处 我在按钮上有一个事件 我如何编写一个 Javascript 来获取 div 并重新加载它 并重新加载部分视图 我从另一个角度看这个问题 但我现在不能这样做 但我需要同样的事情发生 只由 jQuery
  • 如何从查询窗口向 SQL Server 插入 unicode 文本

    我正在使用以下代码 INSERT INTO tForeignLanguage Name VALUES 这个值像这样插入 如何从 sql Management Studio 查询窗口插入 unicode 文本 以下应该有效 N表示 MSSQL
  • 无效的 Apple Watch 图标文件名必须与模式“*@x.png”匹配

    我正在尝试向我的应用程序提交更新以包含 Apple Watch 功能 但是每当我验证构建时 我都会收到下面屏幕截图中详细说明的错误 查看底部错误 我的文件名似乎与模式匹配 所以我不明白问题是什么 如果我能为 1 个图标找到正确的模式 那么我
  • 找出哪些本地分支与远程不同步

    假设我有一个包含多个分支的 git 存储库 我怀疑有些分支没有被推到上游 或者已经过时 或者两者兼而有之 即分歧 有没有一种方法可以通过一个命令找出哪些分支与远程不同步 写一个脚本是可以的 但我想知道是否已经有这样的脚本 我已经做了一个脚本
  • 如何安全地向特定用户发送消息

    我正在使用 ASP NET MVC 5 和 SignalR 我想向特定用户发送消息 我遵循了中解释的方法本教程 https learn microsoft com en us aspnet signalr overview guide to
  • Xcode - 从不同视图更新 ViewController 标签文本

    我的项目中有两个视图控制器ViewController SettingsView 在这里我尝试更新ViewController s标签 当我点击SettingsView s返回键 NSLog工作正常 但标签没有更新 请帮我 设置视图 m I
  • PHP:会话不工作

    当用户在客户端登录时 我将重定向到服务器 一旦验证了他的 user id 和密码 我将在 user id 上设置会话 我将重定向回客户端 然后 我要求填写个人资料信息 如果他想通过 facebook 填写信息 则会出现弹出窗口 请求 fac
  • 匹配 mod_rewrite 规则正则表达式中的问号

    我正在寻找使用多个子字符串重写网址 一个子字符串作为子目录被请求 而任何其他子字符串作为普通查询字符串参数被请求 例如 我想重写 url http www mysite com mark friends page 2 to http www
  • 字符串计算器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 各位程序员大家好 我正在创建一个计算器C 我有一个字符串变量math其中包含100 5 2 我怎样才能显示它的输出498在我的控制台中
  • 使用 bcp 获取可构建的 Boost 提取

    我正在使用 bcp 从 Boost 中提取 Boost Archive 不幸的是我无法构建这个摘录 Boost Archive 不是一个仅包含头文件的库 贾姆抱怨 Unable to load Boost Build could not f
  • 如何在 Eclipse IDE 中默认将 Scala 项目作为 Scala 应用程序运行?

    我是 Eclipse IDE 的新手 问题是如何默认将 Scala 项目作为 Scala 应用程序运行 当我通过按 R 键运行项目时 它总是询问如何将其作为 Scala 或 Java 应用程序运行 有没有办法跳过这个并始终默认以 Scala
  • 使用 nextFloat() 线程“main”中出现 java.util.InputMismatchException 异常

    所以我正在编写一个小程序来计算学生最好成绩的平均值 当我运行它时 我在线程 main java util InputMismatchException中收到此错误异常 我看到一篇文章说要使用 nextLine 然后使用 parseInt 在
  • 查找列中字段的平均值[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个这样的记录 1 11 11 T A 0 0 A 1 B 2 C 3 D 4 有 8 列 每列由制表符空格分隔 我需要的输出是这
  • Ruby on Rails:是否有一种方法可以从数据库检索数据数组,而无需 Rails 实例化任何内容?

    我有一个模型 试图从中检索数据数组 并且不需要将数据实例化为 Ruby 对象 事实上 这只是在我的代码中引入了一个额外的步骤来逐步遍历对象并生成一个仅包含我需要的数据的新数组 Example class Book has attribute
  • 如何手动销毁成员变量?

    我有一个关于析构函数的基本问题 假设我有以下课程 class A public int z int ptr A z 5 ptr new int 3 A delete ptr 现在析构函数应该销毁对象的实例 上面的析构函数正是这样做的 释放由
  • 使用 MySQL 将一个值与表中的多个列(在一个语句中)进行匹配

    我正在使用 MySQL 中的一个表 其中包含以下列 id january february march april etc 表中的数据如下所示 aa 0 0 1 0 ab 1 0 1 0 ac 1 1 0 0 ad 1 1 1 0 要查询它