2013-02-18 104 views
12

我有一個名爲listDB一個MySQL數據庫中包含有列名Product等我想SELECT從所有的表,其中產品類似%XYZ%,並在一個單獨的表顯示搜索結果幾個表。選擇所有表 - MySQL的

我嘗試這樣做:

SELECT * FROM * WHERE Product LIKE %XYZ% 

但它無法正常工作。什麼是正確的查詢這個目的?

+2

使用'union' ..'UNION用於將結果從多個SELECT語句合併成一個結果集。 ' – 2013-02-18 07:02:22

+1

試試這個SELECT * FROM listDB * WHERE產品LIKE '%XYZ%'。 – Parvathy 2013-02-18 07:02:42

+0

@Parvathy - 這查詢不工作..發生語法錯誤 – 2013-02-18 07:54:09

回答

3

由於Suhel Meman在評論中說:

SELECT column1, column2, column3 FROM table 1 
UNION 
SELECT column1, column2, column3 FROM table 2 
... 

會工作。

但所有SELECTS必須由相同數量列的。而且,因爲您將它顯示在一個結果表中,它們應該包含相同的信息。

你可能想要做什麼,是一個連接上的產品ID或類似的東西。這樣你會得到更多的列,這使得大部分時間更有意義。

7

你得到使用該statment包含列產品中的所有表:

SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME IN ('Product') 
     AND TABLE_SCHEMA='YourDatabase'; 

然後,你必須運行這些表一個cursor所以你選擇eachtime:

Select * from OneTable where product like '%XYZ%' 

結果應輸入到第3表或視圖,看看here

注意:這隻能工作,如果所有表的結構是相似的,否則AOU還得看哪些列團結所有這些表,並創建你的結果表/視圖只包含這些列。

2

你可以得到具有列「產品」從INFORMATION_SCHEMA.COLUMNS

SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name ="Product"; 

所有表也創建一個過程

delimiter // 
CREATE PROCEDURE curdemo() 
BEGIN 
    DECLARE a varchar(100); 
    DECLARE cur1 CURSOR FOR SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name ="Product"; 
    OPEN cur1; 

    read_loop: LOOP 
    FETCH cur1 INTO a; 

    SELECT * FROM a; 

    END LOOP; 

    CLOSE cur1; 
END; 

delimiter ; 

call curdemo(); 
2

爲什麼你不只是轉儲MySQL數據庫但其擴展,當你在沒有 - 單一事務的情況下運行,您將中斷與其他客戶端的連接:

mysqldump --host=hostname.de --port=0000 --user=username --password=password --single-transaction --skip-add-locks --skip-lock-tables --default-character-set=utf8 datenbankname > mysqlDBBackup.sql 

後讀出的文件,然後搜索你想要的東西....字符串中.....

3
SELECT product FROM Your_table_name WHERE Product LIKE '%XYZ%'; 

上面的語句將顯示從單個表中的結果。如果你想添加更多的表,那麼只需使用UNION語句。

SELECT product FROM Table_name_1 
WHERE Product LIKE '%XYZ%' 
UNION 
SELECT product FROM Table_name_2 
WHERE Product LIKE '%XYZ%' 
UNION 
SELECT product FROM Table_name_3 
WHERE Product LIKE '%XYZ%' 

...等等