2013-10-31 18 views

回答

4

您不能一步完成此操作,因爲SQL語言要求在準備查詢時修復表。您無法編寫查詢未定義數量的表的一個查詢。

我必須評論說,如果您需要查詢未定義數量的表格,它聽起來可能是一個有缺陷的設計。這是一個code smell - 不是一個壞設計的保證,因爲每個規則都有例外,但是可能是糟糕的設計。

無論如何,我推薦作爲一種解決方案,首先查詢INFORMATION_SCHEMA以查找包含您要搜索的列的表。

SELECT table_schema, table_name 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE column_name = 'phone_number'; 

該查詢將返回一些匹配數。然後,您可以編寫應用程序代碼來遍歷結果,將模式/表名插入到單獨的查詢中。

例在PHP中:

while ($row = $stmt->fetch()) { 
    $sql = sprintf("SELECT * FROM `%s`.`%s` WHERE phone_number = ?", 
     $row["table_schema"], $row["table_name"]); 
    $stmt2 = $pdo->prepare($sql); 
    $stmt2->execute([$phone_number]); 
    $results[] = $stmt2->fetchAll(); 
} 
0

謝謝。但是我不能使用這個解決方案,因爲所有的表都包含相同的列。但是其中一些表格在其中一列中包含特殊值。而且這個數據庫中有很多表格,所以我認爲這個請求會很慢

相關問題