我想获取具有3个特定列的所有表名.

我想要的是从信息模式中获取所有包含columnA AND columnB AND columnC的表名.

目前,我正在使用类似的查询

SELECT DISTINCT TABLE_NAME

FROM INFORMATION_SCHEMA.COLUMNS

WHERE COLUMN_NAME='columnA'

AND TABLE_SCHEMA='mysampledatabase';

如何扩展上述查询并选择包含列名称columnA和columnB的表?

我遇到了this answer和其他类似的答案.他们回答了以下问题:

SELECT DISTINCT TABLE_NAME

FROM INFORMATION_SCHEMA.COLUMNS

WHERE COLUMN_NAME IN ('columnA','ColumnB')

AND TABLE_SCHEMA='YourDatabase';

但是,他们选择具有3列之一的任何表.我认为这是因为WHERE COLUMN_NAME IN(‘columnA’,’ColumnB’,’ColumnC’)相当于COLUMN_NAME =’columnA’或COLUMN_NAME =’columnB’或COLUMN_NAME =’columnC’

我尝试将WHERE子句替换为WHERE COLUMN_NAME =’columnA’AND COLUMN_NAME =’columnB’AND COLUMN_NAME =’columnC’,这显然不会返回任何结果,因为COLUMN_NAME一次只能为1值!

解决方法:

这是可能对您有帮助的查询:

SELECT`TABLE_SCHEMA`, `table_name`,c1.`column_name`,c2.`column_name`,c3.`column_name` FROM `COLUMNS` C1

INNER JOIN `COLUMNS` C2 USING(`TABLE_SCHEMA`, `TABLE_NAME`)

INNER JOIN `COLUMNS` C3 USING(`TABLE_SCHEMA`, `TABLE_NAME`)

WHERE c1.`column_name` = 'col1'

AND c2.`column_name` = 'col2'

AND c3.`column_name` = 'col3';

但是,您需要为每个要查找的列添加或删除多余的JOIN.

现在,我认为这有点繁重且难以理解,这是另一种选择:

SELECT table_schema, table_name, count(*) AS `TablesCount` FROM `COLUMNS`

WHERE `column_name` IN ('col1','col1','col1')

GROUP BY table_schema, table_name

HAVING `TablesCount` = 3

TablesCount应该等于您要查找的列数.如果是这样,则您的表具有所有必需的列

标签:information-schema,mysql

来源: https://codeday.me/bug/20191029/1960747.html

mysql 选择特定的表_MySQL选择具有多个特定列的所有表相关推荐

  1. mysql 堆表_Mysql聚集索引和非聚集索引(堆组织表和索引组织表)

    Mysql聚集索引和非聚集索引(堆组织表和索引组织表) 1.堆组织表(HOT)和索引组织表(IOT)有什么区别? myisam使用的堆组织表(Heap Organize Table, HOT),没有聚 ...

  2. MySQL一般读作什么_MySQL入门必做练习题50题(一) 创建表

    练习题介绍: 对于一个学校信息管理系统中的数据库,有如下4张表: 学生表:student(学号,学生姓名,出生年月,性别) 成绩表:score(学号,课程号,成绩) 课程表:course(课程号,课程 ...

  3. mysql 导入单个表_MySQL 备份恢复(导入导出)单个 innodb表

    MySQL 备份恢复单个innodb表呢,对于这种恢复我们我们很多朋友都不怎么了解了,下面一起来看一篇关于MySQL 备份恢复单个innodb表的教程 在实际环境中,时不时需要备份恢复单个或多个表(注 ...

  4. mysql行锁索引问题_Mysql锁机制--索引失效导致行锁变表锁

    =============== Tips:在阅读本文前,最好先阅读 这篇(Mysql锁机制--行锁)文章~ 在上篇文章中,我们看到InnoDB默认的行锁可以使得操作不同行时不会产生相互影响.不会阻塞, ...

  5. mysql update锁表_MySQL执行update语句是锁行还是锁表分析

    我们在数据库执行update语句的时候,到底是锁表还是锁行?这里直接用MySQL上例子测试下. 一.环境准备 1.新建一个表create table test_update( id BIGINTnot ...

  6. mysql中如何选中数据库_MySQL 选择数据库

    一般 MySQL 数据库服务器上都会有多个可以操作的数据库,我们可能要在数据库之间来回切换 MySQL 允许我们保持连接的时间内切换数据库 mysql client 命令提示窗口中切换 MySQL 数 ...

  7. mysql的其中连接方式_MySQL选择连接中的位置,但不在其中

    我的数据库中有三个表: 产品展示 > id(int,主键) >名称(varchar) 标签 > id(int,主键) >名称(varchar) 产品标签 > produc ...

  8. mysql 递归查出子级_Mysql选择递归获取具有多个级别的所有子级

    我有一张桌子 CREATE TABLE IF NOT EXISTS `Folder` ( `idFolder` INT(11) NOT NULL AUTO_INCREMENT, `FolderName ...

  9. mysql max 多个字段_mysql – 选择max()多列

    这是唯一的识别器有用的一个例子. 想象一下,您有一个autoincrememnting ID字段,然后可以使用相关的子查询查找每个产品所需的id - SELECT * FROM yourTable W ...

最新文章

  1. 【转载】Python 深入浅出支持向量机(SVM)算法
  2. 1.12 梯度的数值逼近-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  3. 程序员面试题精选100题(28)-字符串的排列[算法]
  4. Redis配置文件常用配置详解
  5. sphinx全文检索功能 | windows下测试 (二)
  6. PHP 解析xml(包含非英文字符)
  7. Uboot 启动流程分析
  8. 单处理器调度算法详解
  9. Sublime text 3 快捷键
  10. PHP Filesysten函数
  11. 新华三PRIMERA,开启存储新纪元
  12. 3DSMAX联机渲染、网络渲染、分布式渲染效率评测
  13. 计算机专业论文提纲,计算机硕士毕业论文提纲(范文精选)
  14. 关键词SEO优化技巧
  15. OCR论文阅读笔记01--multi-oriented scence text detection via corner localization and regin segmentation
  16. 开源切片工具--TileStache
  17. 关于stm32的VCP技术原理
  18. tomcat处理html流程,基于Tomcat运行HTML5 WebSocket echo实例详解
  19. STM32 四轴无人机设计——遥控器PPM信号
  20. 联想私有云盘成功中标布丁酒店浙江股份有限公司云盘项目

热门文章

  1. [洛谷P1231] 教辅的组成
  2. Proactor设计模式:单线程高并发
  3. RHadoop和CDH整合实例(三)- RHive
  4. 制作jffs2根文件系统
  5. Linux中断子系统-通用框架处理
  6. emmc固件开发_UP2开发板简易开箱(二)
  7. Cortex M3 NVIC与中断控制
  8. mysql set语句_mysql--乱码解决(6)
  9. python获取返回值_python 调用 shell ,获取返回值和返回信息
  10. oracle数据库存储ip地址,oracle – 以十进制形式存储的IP地址 – PL / SQL以虚线四边形显示...