从所有表中选择

我有一个名为listDB的mySQL数据库,其中包含多个带有列名Product表等。我想从所有表中SELECT Product Like%XYZ%,并将搜索结果显示在单独的表中。

我试过这个:

SELECT * FROM * WHERE Product LIKE %XYZ%

但它不起作用。 什么是正确的查询这个目的?


您可以使用以下语句获得包含列产品的所有表格:

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

然后,您必须在这些表上运行光标,以便每次选择:

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

结果应该输入到第三个表格或视图中,看看这里。

注意:只有当所有表格的结构相似时,这才可以工作,否则你将不得不查看所有这些表格的统一列,并创建结果表/视图以仅包含这些列。


正如Suhel Meman在评论中所说:

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

会工作。

但是所有的SELECTS都必须包含相同数量的列。 而且,因为您将它显示在一个结果表中,它们应该包含相同的信息。

你可能想要做的是加入产品ID或类似的东西。 这样你会得到更多的列,这使得大部分时间更有意义。


为什么你不只是转储mysql数据库,而是在没有使用-single-transaction的情况下运行扩展时,你会中断与其他客户端的连接:

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 

之后,读出文件并搜索你想要什么....在字符串.....

链接地址: http://www.djcxy.com/p/94329.html

上一篇: Select From all tables

下一篇: Laravel / Eloquent memory leak retrieving the same record repeatedly