我希望模式中的所有表与其他表中具有相似名称的其他表匹配。我正在使用以下查询:
SELECT TABLE_NAME, COUNT(COLUMN_NAME) ColCount
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'schema_2' and TABLE_NAME LIKE ANY (array[
'%table1%',
'%table2%',
'%table3%',
'%table4%',
'%table5%'])
我希望将另一列添加到输出中,以指定schema_2中的表与数组中的哪个名称匹配,即
TABLE_NAME COL_COUNT SCHEMA_1_TABLE
table1a 15 table1
有没有办法做到这一点?
答案 0 :(得分:0)
您可以尝试使用联接。有点像:
WITH a AS (SELECT unnest(array['%table1%','%table2%','%table3%','%table4%','%table5%'])
AS table)
SELECT
isc.TABLE_NAME,
COUNT(isc.COLUMN_NAME),
REPLACE(a.table,'%','')
FROM
INFORMATION_SCHEMA.COLUMNS isc
LEFT JOIN a ON (isc.TABLE_NAME LIKE a.table)
WHERE
isc.TABLE_SCHEMA = 'schema_2'
AND a.table IS NOT NULL
GROUP BY
isc.TABLE_NAME,
a.table
您还可以将INFORMATION_SCHEMA.COLUMNS与INFORMATION_SCHEMA.TABLES结合在一起,以便仅检测任何重复项,而不仅仅是指定的重复项。