mysql - Select From 从查询中动态获取的表名

标签 mysql sql subquery

我有 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);

sqlfiddle

关于mysql - Select From 从查询中动态获取的表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31141628/

相关文章:

mysql - Vbulletin 错误 1062 (23000) 位于第 38766 行 : Duplicate entry

sql - Django 中的 CharField 和 TextField 有什么区别?

mysql - 我无法弄清楚该SQL查询中的错误在哪里

sql - 基于子查询的T-SQL更新

mysql连接表

mysql - 如何在mysql中使用两个日期输入参数之间的运算符?

java.sql.SQL语法错误异常 : Table 'mydb.alien' doesn't exist

sql - PostgreSQL:十进制/数字数据类型的数字字段溢出 - 为什么会出现此错误

NHibernate QueryOver 与子查询或其他想法如何工作?

.net - Entity Framework 子查询