mysql - SQL:从名称以“_reports”结尾的多个表中选择 *
问题描述
所以我在一个网站上工作,人们可以在某个频道中放置文本和图像,为了防止不需要的帖子,我创建了一个报告按钮。当按下时,表格中将插入一个新行*random_code*_reports
,该频道的管理员可以对它们做出反应。
但是,站点所有者也应该能够对它们做出反应,但是我无法进行有效查询来选择所有random_code _reports 表的所有报告
因此,需要明确的是,当创建通道时,将创建几个表:
$code."_posts"
$code."_files"
$code."_comments"
$code."_likes"
$code."_reports"
其中代码是 6 个字符的随机值。
是否有某种类似的功能可以选择名称中带有“_reports”的某些表?
解决方案
没有可供选择的 SQL 标准FROM %_table
您必须首先通过查询某种元信息来简单地选择所有表。
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%_reports';
(注意,这是特定于 mysql 的,其他数据库服务器有其他查询可用表的方法)
您可以将数据重新组织到多个数据库中,而不是表前缀,然后使用
SELECT * FROM $random_code.reports
通过这种方式,您可以将具有大量数据的整个数据库移动到它们自己的服务器上,并调整您的连接字符串以查找哪些通道与哪些服务器相关联(称为单租户数据库)
或者,您可以将随机代码添加为列,有时称为描述符列或多租户数据库。
SELECT * FROM reports where channel_code = '$random_code'
SELECT count(*) FROM reports group by channel_code
推荐阅读
- c# - MySQL Entity Framework 6 更新影响所有行代码优先
- firefox - FireFox 浏览器中的 navigator.buildID 每个操作系统都是唯一的
- sql - 如何在sql中显示每个日期的最后一个事件
- javascript - 有灰度 JPG 格式吗?
- java - 保存实体后,Hibernate 为使用 @Formula 注释的实体属性返回 null
- python - 将亚马逊 s3 存储桶文件夹复制到本地
- c# - 我想像我的世界一样旋转相机 | 安卓
- google-cloud-vision - Google Vision API Document Text 多张图片,采用 base64 字符串
- c# - C# 实体框架批量更新
- c - 在库中使用外部调试打印功能