Php FROM子句中CONCAT的用法

Php FROM子句中CONCAT的用法,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个非工作查询,因为子查询FROM子句不理解CONCAT(): 有没有办法在一个单独的声明中实现这一点 我收到的错误消息是: #1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near'('prefix_',e.event_id)注册的正确语法 您正在尝试动态生成一个表名?我认为这是不可能的……因为在能够计算和执行SQL之前,不需要解析FROM子句表名吗?只是为了确保我读的是正确的。。。您有很多名为prefix_1、prefix_2的表,希望在查询中动态选

我有一个非工作查询,因为子查询
FROM
子句不理解
CONCAT()

有没有办法在一个单独的声明中实现这一点

我收到的错误消息是:

#1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near'('prefix_',e.event_id)注册的正确语法


您正在尝试动态生成一个表名?我认为这是不可能的……因为在能够计算和执行SQL之前,不需要解析FROM子句表名吗?

只是为了确保我读的是正确的。。。您有很多名为prefix_1、prefix_2的表,希望在查询中动态选择并联接它们?@Erik:是的,我有数百个表“prefix_某物”,我想选择注册Attendee 123456的所有事件。我认为这是不可能的,而且这肯定不是SQL的使用方式。你为什么要这样做?@Erik:所以在MySQL中是不可能的。我发现MS Access可以动态创建表名。解决这个问题的最简单方法是规范化数据库设计。有一个事件注册表,将事件id作为列,而不是表名的一部分。#1146-表“注册”不存在。现在我们取得了一些进展:您的还原方法似乎得到了有希望的结果。你建议的代码中有一些错误我必须纠正。我会在几分钟内想出一个干净的解决方案。@Frank1999要获得确切的结果,您需要显示您的模式。然后,只有我会解决。如果满意,请向上投票answer@Priyank由于查询当前已编写,因此不需要子查询的外部部分。您可以在它的上运行内部查询own@Priyank:不幸的是,即使您提出了一个有趣的命题,我仍然会遇到动态生成表名错误。这里有更多解释(prepare/execute):简短回答:这不可能在一条语句中实现。
SELECT * 
FROM `events` e
WHERE EXISTS (SELECT * 
              FROM CONCAT('prefix_', e.`event_id`) registrations
              WHERE registrations.`attendee` = 123456
             )
SELECT * FROM (SELECT *, 
          CONCAT('prefix_', `event_id`) as prefix FROM  `events`  
          WHERE events.attendee = 123456
         );