我有一個未定義數量的表(x)。我如何讓SQL只檢索包含特定記錄的表的名稱? (y)只有在具有特定元素的情況下才在MySQL中選擇表名稱
1
A
回答
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
謝謝。但是我不能使用這個解決方案,因爲所有的表都包含相同的列。但是其中一些表格在其中一列中包含特殊值。而且這個數據庫中有很多表格,所以我認爲這個請求會很慢
相關問題
- 1. 只有在具有id屬性的情況下選擇父div纔可以
- 2. 只有在有選擇的情況下,才能刪除選擇的EOL空格
- 3. XPath:選擇*不*具有特定名稱的子元素
- 4. 在不知道元素標籤名稱的情況下獲取具有特定屬性的元素
- 5. 只有在li元素尚未存在的情況下才添加li元素?
- 6. 在特定div中選擇具有特定類的元素
- 7. 只有在所有Ids適用的情況下才能從ManyToMany中選擇
- 8. 只選擇一個行的情況下有特定列
- 9. XPath來選擇具有指定名稱的所有元素
- 10. 只有在存在一定的時間差的情況下,Mysql纔會有明顯的選擇
- 11. 從具有特定類名的元素中選擇值
- 12. 如何在沒有特定元素的情況下模糊
- 13. 只是在列表中沒有選擇的情況下從列表中僞隨機選取一個元素
- 14. 審計表只在特定情況下
- 15. 如何在數據庫中選擇具有特定名稱的所有表格
- 16. 只有在物品存在的情況下才定義變量
- 17. linq to xml只選擇具有特定元素的節點
- 18. 只有在容器沒有特定類的情況下,jQuery纔會選擇兒童
- 19. 只有在沒有子女的情況下選擇父行
- 20. asihttprequest只有在沒有存儲的情況下才能下載
- 21. 驗證元素是否具有特定元素的名稱
- 22. 如何在沒有指定名稱的情況下通過ajax中的所有表單元素
- 23. 選擇元素的父元素不具有特定的類
- 24. CSS選擇具有特定子元素的元素的同胞?
- 25. 選擇具有子元素而沒有特定類別的元素列表
- 26. 選擇XML元素具有相同名稱與simple_load_xml在PHP
- 27. 只有在不存在的情況下才能添加Java命名約定
- 28. 首先在列表中選擇具有特定元素的列表的子集
- 29. 只有在存在ruby的情況下才能下載文件
- 30. Scrapy .css選擇具有特定屬性名稱和值的元素