Php 查找表名

Php 查找表名,php,mysql,algorithm,Php,Mysql,Algorithm,我有8张桌子。。假设它是x1,x2…x8。 这些表具有类似的结构和字段:id、content、pageview Pageview计数特定id的视图数。post存储在具有特定id的行中 我想从这8个表格中找到第一个基于pageview的前10名帖子 我用过: $sql="select id,content from x1,x2,x3,x4,x5,x6,x7,x8 ORDER by pageview;" 结果出来了,好的! 假设结果如下 Id内容 这只是一个 19好吧,我该说什么 .. .. 在

我有8张桌子。。假设它是x1,x2…x8。 这些表具有类似的结构和字段:id、content、pageview

Pageview计数特定id的视图数。post存储在具有特定id的行中

我想从这8个表格中找到第一个基于pageview的前10名帖子

我用过:

$sql="select id,content from x1,x2,x3,x4,x5,x6,x7,x8 ORDER by pageview;"
结果出来了,好的! 假设结果如下

Id内容
这只是一个 19好吧,我该说什么 .. ..

在这个结果中,我想找到这个ID:19属于哪个表? 我可以运行循环来匹配内容,但这不够快,逻辑也不够好


找到特定id的tablename的任何解决方案?

如果每个表中的字段名相同,则示例查询将不会按原样运行。更不用说你在生产笛卡尔产品,因为你没有加入任何领域

我认为您可能正在寻找一个
联盟

select *
from (
   select 'x1' as whichtable, id, content, pageview from x1
   union
   select 'x2' as whichtable, id, content, pageview from x2
   ...
   union
   select 'x8' as whichtable, id, content, pageview from x8
) t
order by pageview
然后可以使用whichtable字段查看结果来自哪个表

这是一个样本


只需重新阅读您的帖子,如果您正在查找哪个表包含ID 19,则可以向上述查询添加where子句:

select *
from (
   select 'x1' as whichtable, id, content, pageview from x1
   union
   select 'x2' as whichtable, id, content, pageview from x2
   ...
   union
   select 'x8' as whichtable, id, content, pageview from x8
) t
where id = 19
order by pageview
@user2320375——没问题,很高兴我能帮上忙!