【发布时间】:2018-08-11 12:26:41
【问题描述】:
这是我的问题:我想检查名称参数化的表中的行,例如table_X。 X 的值来自另一个表,因此例如在我的主表中,我有一个列 c_id 和一个列 X,要加入的表的名称为 table_X,它无疑是存在的,并且它具有相同的列 @987654324 @,我将加入,以检查该表中是否有 c_id 的值。
我尝试了一个视图,但没有成功,因为我无法在视图中放置参数化的表名。我可以参数化 where 子句和其他东西,但不能参数化表名。
-
我已经尝试了一个过程,
SET @q = CONCAT('select blabla from table_', X); PREPARE stmt FROM @q; EXECUTE stmt;但是程序不能返回值,我需要它,因为我需要知道参数化表中是否有
c_id值,否则它没有用。 我尝试了一个函数,但是“存储函数或触发器中不允许使用动态 SQL”
那么我该怎么做才能提取这些数据呢?我从 PHP 调用这个视图/函数/任何东西,我知道我可以从 PHP 端通过两个查询来完成它,但我需要在 db 端完成它,以便将来实现。 有可能吗?
注意:我不能修改 DB 的结构 :) 顺便说一句,它是 Limesurvey db,听起来像一个疯狂的 db 结构,对吧?
【问题讨论】:
-
听起来您需要重构数据库以删除这些依赖项。
标签: mysql sql parameterized