簡體   English   中英

根據列號在多個表中搜索

[英]Search in multiple table based on column numbers

table1有6列

table2有8列

table3有10列

table4有12列

所有表都有一個通用名稱,例如pid。 我想在PHP中進行查詢,如果在表1中找到pid,則將其發送到PHP查詢,或者在表2中進行搜索,或者如果找不到,則在表3中或在表4中進行下一步搜索。

有什么我可以根據列號預先區分的方法,在PHP中進行查詢之前要搜索哪個表。

由於您沒有附加代碼,因此這里提到了邏輯解決方案。 您可以檢查列是否存在,然后在其中搜索

首先,您必須將array中的所有表名獲取為

SHOW TABLES FROM db_name 

現在進行foreach循環,如果count> 0則中斷

 SELECT count(*) as c,TABLE_NAME as tn
    FROM information_schema.COLUMNS 
    WHERE 
        TABLE_SCHEMA = 'db_name' // your db name
    AND TABLE_NAME = 'table_name' // from loop get it
    AND COLUMN_NAME = 'pid' // column name

Now check c in php if >0 return tn and then break

最后在表中進行搜索查詢,您從tn得到什么

如果查詢integer數值。 然后,您可以為此維護一個Range table 它僅存儲table name如table1)及其minimum key valuemaximum key value 如果對該整數值有任何查詢,那么我們可以通過使用range table找到該記錄所屬的表名,並從諸如table1的目標表中獲取它。 Range table很小,正如您所說的,它有5-6條記錄,因此花費的時間更少。 現在轉到目標表並查找數據。

注意:此方法各有利弊。 我只是在分享我的觀點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM