假设我们有 3 个表:
表 1:
ID FrenchCity
1 Paris
2 Lille
3 Lyon
表 2:
ID IntlCity
1 Lille
2 Geneva
3 Toulouse
表 3:
ID BritishCity
1 London
2 Leeds
我想获取与值相对应的列名。
例如,我给了一个值 Lille
,SQL 应该返回 Table1.FrenchCity Table2.IntlCity
。
正如我所说,我想获得一个值的列名。所以 Lille
存在于 2 个表中,我希望 SQL 返回 {{table name}}.{{column name}}
如何编写查询来做到这一点?
最佳答案
这适合你吗?
SELECT 'Table1.FrenchCity' as fieldName
FROM Table1
WHERE FrenchCity = 'Lille'
UNION ALL
SELECT 'Table2.IntlCity' as fieldName
FROM Table2
WHERE IntlCity = 'Lille'
UNION ALL
SELECT 'Table3.BritishCity' as fieldName
FROM Table3
WHERE BritishCity = 'Lille'
然后就可以使用array_agg
SELECT array_agg(fieldName)
FROM (
previous union query
) t
关于sql - 如何在 PostgreSQL 中获取值的列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37884924/