mysql查询指定一群人_mysql如何在多个表中查询指定数据

1.问题描述

假设数据库中存在n个游戏订单表,表名格式为game_[0-9a-z]+_order.

已知存在订单号18demo000001,如何比较高效地查出这个订单在哪个游戏表?

2.自己做的思考

目前能想到的就是先列出所有的游戏表

show tables like "game_%_order"

然后再手动一个一个地查,但是这样效率太低。

是否有更好的方法比较高效的查询?

3.注:仅讨论该场景的解决方法,不必讨论该场景的合理性。实际上订单号是有游戏信息的,但是不知道为何没有落到它对应的游戏的游戏表中,所以需要进行整个库的全表查询。请把表和订单当成没有任何关系

4.另注:谢谢大家的回答,看来并没有更好的方案了,本来想着能否使用show tables like "game_%_order"去获得全部表名的数组。然后select * from 表名数组 where orderID = "18demo000001" 的思路去解决的。但是无论是show tables 赋值给数组,还是select from 数组,这个在mysql中都好像不能实现。

后来者如果在这条思路上有相关的实现欢迎回答讨论,目前的做法是手动查了一百多种表找到了出错数据所在的位置。

具体做法是

update game_demo1_order set ext1 = "debug" where orderID = "18demo000001";

update game_test2_order set ext1 = "debug" where orderID = "18demo000001";

......

update game_table100_order set ext1 = "debug" where orderID = "18demo000001";

如果这个表有这个数据,navicat(mysql命令行或者其他工具应该也)会提示受影响的行: 1,如果这个表没数据,会提示受影响的行: 0

其中ext1是表中的预留字段或者说无实际意义并且不影响业务的字段

写100行update使用了一些小技巧,复制show tables like "game_%_order"的结果(表名)到sublime,使用find all找\n,使多光标出现在每一行,输入update和set ext1 = "debug" where orderID = "18demo000001";

拿到结果后复制到sublime,全局搜索即可

ef6b4de6737b334efc791e6c1e15d2eb.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值