Mysql表列包含数据库名称->;是否从引用的数据库中选择事务?
希望我说得够清楚了 我有一个mysql设置,其中我有一个中央数据库(名为central),它有一个accounts表,保存所有用户帐户,然后每个用户都有一个单独的数据库保存他们的事务 中央桌子看起来像这样:Mysql表列包含数据库名称->;是否从引用的数据库中选择事务?,mysql,reference,Mysql,Reference,希望我说得够清楚了 我有一个mysql设置,其中我有一个中央数据库(名为central),它有一个accounts表,保存所有用户帐户,然后每个用户都有一个单独的数据库保存他们的事务 中央桌子看起来像这样: CREATE TABLE Central.accounts ( ID int UNSIGNED NOT NULL AUTO_INCREMENT, UserID int(10) NOT NULL, DatabaseRef varchar(20) ) 我想执行以下操作:
CREATE TABLE Central.accounts (
ID int UNSIGNED NOT NULL AUTO_INCREMENT,
UserID int(10) NOT NULL,
DatabaseRef varchar(20)
)
我想执行以下操作:从Central.accounts->DatabaseRef列引用的数据库中的Transactions表中获取所有行
SELECT * FROM [CA.DatabaseRef].Transactions T
JOIN Central.accounts CA ON CA.ID = T.UserID
WHERE CA.UserID = 2
这有可能吗?最终,我希望在一个查询中完成这项工作,而不是使用php。您可以使用语句进行此类查询 当然,lasz部分不起作用,因为没有这样的数据库或表 为表“事务”选择拒绝给用户“u_1350201779”@“localhost”的命令 小提琴
CREATE TABLE accounts (
ID int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserID int(10) NOT NULL,
DatabaseRef varchar(20)
);
✓
INSERT INTO accounts VALUES (NULL,2,'test');
✓
SELECT DatabaseRef INTO @sql FROM accounts WHERE UserID = 2;
✓
SELECT @sql;
| @sql |
| :--- |
| test |
SET @sql = CONCAT('SELECT * FROM ',@sql,'.Transactions T WHERE T.UserID = 2');
✓
SELECT @sql;
| @sql |
| :--------------------------------------------------- |
| SELECT * FROM test.Transactions T WHERE T.UserID = 2 |
PREPARE test FROM @sql;
EXECUTE test;
SELECT command denied to user 'u_1350201779'@'localhost' for table 'Transactions'