mysql通过in (select table_name from )方式查询不到已经存在的表

系统环境

centos7.7+mysql5.6.46/mysql5.7.29

现象复现

准备测试库,test中的6张表
mysql> show tables;
±---------------+
| Tables_in_test|
±---------------+
| aa |
| bb |
| cc |
| dd |
| ff |
| testflashback2 |
±---------------+
创建一个测试表,里面存储三张表名
mysql> create table pwzy (table_name varchar(100));
mysql> insert into pwzy values(‘AA’),(‘EE’),(‘DD’);
mysql> select * from pwzy;
±-----------+
| table_name |
±-----------+
| AA |
| EE |
| DD |
±-----------+
通过not in方式查询不存在的表名

mysql> select table_name from pwzy where table_name not in (select table_name from information_schema.tables where table_schema=‘qjqx’);
±-----------+
| table_name |
±-----------+
| EE |
±-----------+
这里能查询到结果
通过 in方式查询存在的表名

mysql> select table_name from pwzy where table_name in (select table_name from information_schema.tables where table_schema=‘qjqx’);
Empty set (0.01 sec)
这里查询不到结果,期望得到的结果是AA,DD

mysql> select table_name from pwzy where table_name in (‘AA’,‘EE’);
±-----------+
| table_name |
±-----------+
| AA |
| EE |
±-----------+

解决方法

select a.table_name from pwzy a,(select table_name from information_schema.tables where table_schema=‘webdata’) b where a.table_name=b.table_name;
±-----------+
| table_name |
±-----------+
| test1 |
| test2 |
| test3 |
±-----------+

总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值