查询数据库中的所有表

时间:2016-04-21 15:57:56

标签: sql postgresql

我肯定只是在这里歪曲我的声明。我想获得满足两个条件的所有表的列表(但它返回0)。如果我单独运行每个语句,它们每个都返回多个表,但是返回并在查询中返回0表(我知道这是不正确的)。我需要更改什么才能成功执行此操作?

作品

select 
    table_name, column_name
from  
    information_schema.columns 
where 
    column_name ILIKE 'Man%'

作品

select 
    table_name, column_name
from 
    information_schema.columns 
where 
    column_name ILIKE 'sale%'

返回0结果

select 
    table_name, column_name
from 
    information_schema.columns 
where 
    (column_name ILIKE 'man%'
     and column_name ILIKE 'sale%')
order by 
    table_name asc

我想返回包含以man开头的列的表和仅以sale开头的列。有没有办法实现这个结果?

2 个答案:

答案 0 :(得分:2)

你可以做这样的事情

select a.table_name,a.column_Name,b.column_Name from 
(select table_name, column_name
from information_schema.columns 
where column_name ILIKE 'Man%') a,
(select table_name, column_name
from information_schema.columns 
where column_name ILIKE 'sale%')b
where a.table_name=b.table_name
order by a.table_name asc

答案 1 :(得分:1)

正如我所说,我对postgresql并不熟悉,所以这可能行不通。 :)

select a.table_name, a.column_name, b.column_name
from information_schema.columns a
join information_schema.columns b on a.table_name=b.table_name
where (a.column_name ILIKE 'man%'
AND b.column_name ILIKE 'sale%')
ORDER BY table_name ASC