如果表中的列具有某个特定值,如何查询DBName

时间:2017-08-03 01:51:03

标签: mysql

eImagine当您连接到服务器时,这是您的数据库结构。大多数情况下,您将拥有相同的表,但值不同。我想查询数据库名称,如果我的表中的一个值,即Tbl1 ColumnName Col1的值等于'Accepted'。

DbName1
       Tbl1              
           Col1  -- 'Accepted'    // this are the values col1 holds
                 -- 'Rejected'
                 -- 'In Process'
                 -- 'Awaiting Processing'
DbName2
       Tbl1
           Col1 -- 'NotAccepted'
                -- 'Rejected'

DbName3
       Tb1
           Col1 -- 'NotAccepted'
                -- 'Awaiting Processing'
DbName4
       Tbl1
           Col1 -- 'Accepted' 
                -- 'Rejected'

Expected Result 
DbName1    
DbName4  -- since both DB has Table name Tbl1 whose column Col1 = 'Accepted'

在我的Sql环境中,我至少拥有37个数据库。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

如果你知道数据库名称和表名以及列名,你可以使用这样的UNION解决方案:

SELECT distinct dbname
  FROM ( 
    select 'DbName1' as dbname, col1 from DbName1.tb1
    union all
    select 'DbName2' as dbname, col1 from DbName2.tb1
    union all
    select 'DbName3' as dbname, col1 from DbName3.tb1
    union all
    select 'DbName4' as dbname, col1 from DbName4.tb1
    ) dbs
WHERE dbs.col1 = 'Accepted';

虽然这个查询可行,但您应该考虑使用更好的规范化数据库而不是4(或者更多)具有相同的结构和数据。