我有很多具有相同列的表,我需要從所有這些表中提取數據(如COUNT)。從不同的SQL表中選擇數據按表名過濾
我知道我可以創建一個UNION語句,但是我有100個表,並且所有表名都具有相同的格式(example_table_1。example_table_2 ...)。有沒有辦法讓所有的表具有一定的條件(在這種情況下,表名包含「example_table」)?
感謝您的幫助,我是一個新手。
我有很多具有相同列的表,我需要從所有這些表中提取數據(如COUNT)。從不同的SQL表中選擇數據按表名過濾
我知道我可以創建一個UNION語句,但是我有100個表,並且所有表名都具有相同的格式(example_table_1。example_table_2 ...)。有沒有辦法讓所有的表具有一定的條件(在這種情況下,表名包含「example_table」)?
感謝您的幫助,我是一個新手。
具有相同結構的多個表幾乎沒有任何意義,如果可能的話應該修復設計。
您可以使用INFORMATION_SCHEMA
獲得計數,或單獨列出表(然後你可以用你的SQL語句Concat的):
SELECT SUM(table_rows)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '{your_db}'
AND table_name LIKE '%example_table%';
如果你需要精確的計數,你應該使用CONCAT()
建設COUNT()
查詢,爲INFORMATION_SCHEMA
可能不可靠:
SELECT CONCAT('SELECT "',table_name,'" AS table_name, COUNT(*) AS ct FROM ',table_schema,'.',table_name,' UNION')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '{your_db}'
AND table_name LIKE '%example_table%';
嗨,感謝您的答案。這個結構很有意義,因爲它是一個龐大的數據庫,否則服務器會崩潰。這種方法說我在每個表中有2行,但這是錯誤的。 (每張表有aprox。1.200.000行) –
@ user1475216查看已更新。 –
感謝您的更新!這個方法給了我一個表,如:table1 = 100,table2 = 105等。我需要這個來總結所有這些數字 –
您正在使用什麼數據庫? –
嗨,你是什麼意思?我正在連接到MySQL主機 –
MySQL是數據庫然後。這個問題的答案會因rdbms/database而異。 –