我有一个应用程序有一个中央数据库,其中包含一般信息以及所有使用我的应用程序的公司的信息。加入两个数据库时,其中一个名称包含在另一个
因此,数据库中的一个是main
并具有表users
其中,为了便于讨论看起来是这样的:
id | name | api_key | databasename
1 | Company1 | 12345678 | user_data_1
因此,数据库2被命名为user_data_1
,并会是这个样子:
id | name | password | more things...
1 | My Name | abc123 | ....
我知道我可以加入这些数据库来获取公司和用户的数据,如果我写这个:
SELECT d2.name as username, d1.*
FROM main.users d1, user_data_1.users d2
WHERE d1.`api_key`='12345678' AND d2.password='abc123'
现在,我非常确定答案是否定的,因为我找不到任何暗示我可以做的事情,但有什么办法可以从第一行的第一行动态获取第二个数据库的名称并写下:
SELECT d2.name as username, d1.*
FROM main.users d1, **(d1.databasename)**.users d2
WHERE d1.`api_key`='12345678' AND d2.password='abc123'
凡(d1.databasename)在第二SQL是试图获取从由api_key
列在第一个数据库中找到该行的第二个数据库的名称。
你或许可以使用动态SQL做到这一点,但你的如果您真的需要这样做,设计可能会有问题。 –
嗯..我不*真的*需要这样做,有办法,但它似乎是一次获得两位数据的一种命中方法。 –