我有一個應用程序有一箇中央數據庫,其中包含一般信息以及所有使用我的應用程序的公司的信息。加入兩個數據庫時,其中一個名稱包含在另一個
因此,數據庫中的一個是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做到這一點,但你的如果您真的需要這樣做,設計可能會有問題。 –
嗯..我不*真的*需要這樣做,有辦法,但它似乎是一次獲得兩位數據的一種命中方法。 –