查询时返回带有列的表名
Posted
技术标签:
【中文标题】查询时返回带有列的表名【英文标题】:returning table name with columns when queried 【发布时间】:2015-05-04 14:45:51 【问题描述】:我正在运行一些包含连接的查询。这些表很大,并且有一些名称相同的列。有没有一种方法可以创建一个查询,该查询会在表名前面加上列名?
我想要...
SELECT * FROM users u LEFT OUTER JOIN favorites f ON u.id = f.userID
让它显示一些类似...的东西
u.id | u.name | u.email ... f.id | f.name ...
不仅仅是
id | name | email ... id | name ...
我喜欢将我的查询作为关联数组处理,因为与编号索引相比,它们更易于阅读,因此当列名不唯一时,这会使事情变得具有挑战性。
【问题讨论】:
我已将*
替换为带有别名的列列表 - u.id u_id, f.id f_id
等等。如果有人有更自动化的方法,那就太好了。
大多数时候,指定列被认为是最佳实践,以避免索引和绑定问题。此外,它更有效。
唯一的问题,我同意,大多数时候我更喜欢这样做,但这些表每个都有 50 多个字段,所以花时间把每个列名放进去可能会很乏味。
SELECT u.*, f.* FROM ...
会发生什么?客户端语言是什么?
同样的结果,只是列出了没有指示符的列名。不过我也有同样的想法
【参考方案1】:
你需要给你的列加上别名——(如果你想在列名中加上句点,你需要使用双引号):
select u.id as "u.id",
u.name as "u.name",
u.email as "u.email",
f.id as "f.id",
f.name as "f.name"
FROM users u LEFT OUTER JOIN favorites f ON u.id = f.userID
【讨论】:
我将此标记为答案,因为除了为您要返回的每个单独字段手动分配字段名称之外,似乎没有其他方法可以做到这一点。以上是关于查询时返回带有列的表名的主要内容,如果未能解决你的问题,请参考以下文章
clojure jdbc postgres:为啥我的查询结果将表名中的 unicode 字符返回为 �?