是否可以在没有准备语句的情况下使用动态表名在一个查询中执行此操作? [复制]

Posted

技术标签:

【中文标题】是否可以在没有准备语句的情况下使用动态表名在一个查询中执行此操作? [复制]【英文标题】:is it possible to do it in one query with dynamic table name without prepare statement? [duplicate] 【发布时间】:2017-02-23 09:50:38 【问题描述】:

我有一个调查记录表,我想统计最新的调查记录,字段“完成”是“Y”,而最新的调查名称在另一个表中,创建日期,也就是说,表名是动态的,

select 'complete' count(*)  
from( 
  select 'survey_name' 
  from survey 
  Where active=''Y'' 
  order by cratedate desc 
  limit 1
  ) 

但它不能工作

记录表:(名称是动态的)

id | complete | submitdate

调查表:

survay_name | active | cratedate

我知道应该通过prepare语句来完成,但是我的系统(joomla + plotalot)只接受一个查询。

【问题讨论】:

调查表和记录表有什么联系? 问题是这两个表之间没有链接。 【参考方案1】:

您需要在 Survey 表格中添加“id”列 当然,ID 必须链接 SURVEY 和 RECORD 表

那么,你可以使用下面的查询

SELECT COUNT(r.complete) as complete, s.survay_name, s.createDate
FROM survey s
LEFT JOIN record r ON s.id = r.id
WHERE s.active = 'Y' AND r.complete = 'Y'

【讨论】:

嗨AKZhang,感谢您的回复,但该表是由另一个系统创建的,所以我无法更改表结构。 嗨@eagle 那么你不能链接这两个表..如果你想获得 COUNT,那么你将无法获得 survay_name.. 或者,你有另一个表ID 和 survay_Name 之间的链接? 不,我认为应该使用子查询或准备语句。

以上是关于是否可以在没有准备语句的情况下使用动态表名在一个查询中执行此操作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

mybatis动态调用表名和字段名

[转]MyBatis动态传入表名,字段名参数的解决办法

具有可变列名的动态更新语句

mysql中查询语句的表名,是不是可以动态选择表名像这样

我可以在准备好的语句中参数化表名吗?

我可以在准备好的语句中参数化表名吗?