2013-02-18 87 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%' 

...等等