我有 3 张 table
营销事件1(表格)
id campaign_details
1 'some detail'
营销事件2(表格)
id campaign_details
1 'some other detail'
campaign_list(表)
id campaign_table_name
1 'campaign1'
2 'campaign2'
营销事件列表包含上述两个表的表名称。我想从“营销事件列表”表中进行选择,并使用从此选择中获得的表名称获取记录计数 例如。
使用select我得到campaign1(表名称)。然后我对 Campaign1 运行选择查询来计算记录数。
我现在正在做的是。 -从campign_list中选择 -循环遍历所有campaign_table_names并单独运行选择查询
有没有办法使用单个查询来做到这一点 像这样的东西
select campaign_name,(SELECT COUNT(*) FROM c.campaign_name) as campcount from campaign_list c
SQLFiddle:http://sqlfiddle.com/#!9/b766d/2
最佳答案
不可能在单个查询中动态构建它,但有可能作弊。特别是如果只有两个链接表。
我列出了两个选项
左外连接两个表
select campaign_name,
coalesce(c1.campaign_details, c2.campaign_details)
from campaign_list c
left join campaign1 c1 using (id)
left join campaign2 c2 using (id);
合并所有两个不同的选择
select campaign_name,
campaign_details
from campaign_list c
join campaign1 c1 using (id)
union all
select campaign_name,
campaign_details
from campaign_list c
join campaign2 c2 using (id);
关于mysql - Select From 从查询中动态获取的表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31141628/