2013-05-16 154 views
0

我處於需要檢查數據庫中的任何表中是否存在特定記錄的情況。檢查數據庫中的任何不同表中是否存在記錄

所有表具有相同的結構,但創建不同表的原因僅僅是對它們進行分類。

我想做一個查詢,檢查是否存在任何表中的特定記錄。看看聯盟,我想這將是一個開銷,因爲我有大約100個不同的表,其中一些有30萬條記錄...

有人可以引導正確的方向......它也想知道Google搜索引擎做的事情......

謝謝

+1

爲什麼不使用稱爲'category'的新列對它們進行分類? –

+0

如果表格相同,爲什麼不創建一個類別字段並使用一個大表? – Melanie

+0

我應該做到了,但現在我的方式來回復這些東西:( – troy

回答

1

好吧,如果你只需要做一次,就可以生成一堆,你可以運行,看看其中是否實際上返回一些SQL語句。顯然用大括號替換你需要的東西。如果你需要反覆這樣做,那麼一定要看看別的。

SELECT CONCAT('SELECT {something} from', GROUP_CONCAT(table_name) , 'where {something_else};') 
AS statement FROM information_schema.tables 
WHERE 
    table_schema = '{database_name}' 
    table_name LIKE '{myprefix}%'; 
0

首先在查詢下面運行。例如,我有數據庫命名測試。它包含5個具有相同結構的表格。 SELECT CONCAT( 'SELECT * FROM',TABLE_NAME '其中COL_NAME =價值', '聯盟 ')FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA =' 測試'

在這裏,你可以得到一個結果集,這樣

SELECT * FROM消息UNION SELECT * FROM messaging1 UNION SELECT * FROM messaging2 UNION SELECT * FROM messaging3 UNION SELECT * FROM messaging4 UNION SELECT * FROM messaging5 UNION

運行這個結果集然後您可以從所有表中獲取所需記錄

注意:在查詢結束時刪除'UNION'。

如果您有任何問題,請讓我知道。

相關問題