sql - 如何在 PostgreSQL 中获取值的列名?

标签 sql postgresql

假设我们有 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/

相关文章:

ruby-on-rails - PostgreSQL "could not identify an equality operator for type json"的 Heroku 错误

python - 从 Django 中的死数据库连接中恢复

sql - rails : query the existence of a join table's child

sql - PostgreSQL 中带日期的百分比

mysql - 分组元素乘积的 SQL SUM

sql - 其他表有外键时如何删除表内行

sql - 如何在 BigQuery 的新 SQL 查询中连接/使用已保存的查询

c - Postgresql:C 中自己类型的定义

postgresql - 从不同的表添加 COUNT(*),包括 WHERE 语句和 GROUP BY

mysql - 计算过去四个完整周的每周平均值