【问题标题】:How to avoid duplicate field name in query result如何避免查询结果中的重复字段名
【发布时间】:2018-05-03 09:44:23
【问题描述】:

我正在开发一个 padrino 网络应用程序。我有两张桌子:

  • User 表:有idnameaddress 字段
  • Post 表:有iduser_idcontent

如果我加入他们,

User.join(:posts, user_id:, :id)

他们返回两个同名的字段id

id name address id user_id content
 1 jim   ***     3    1      post1

我想重命名这些ids。我希望结果是:

u_id name address p_id user_id content
1   jim  ***     3       1     post1

我在 padrino 项目中为 postgresql db 使用 Sequel 适配器。 在mysql查询中,会是这样的:

select u.id as u_id, 
       u.name, 
       u.address, 
       p.id as p_id, 
       p.user_id as user_id, 
       p.content 
from users u 
  join posts p on u.id = p.user_id 

我该怎么办? 我想要的不是sql查询,而是ruby语言的代码。谢谢。

【问题讨论】:

  • 该查询同样适用于 Postgres。请注意,分配与列名相同的别名几乎没有用,因此p.user_id as user_idp.user_id 完全相同。

标签: ruby sequel padrino


【解决方案1】:

您应该使用Dataset#select 来设置选择哪些列:

User.from{users.as(:u)}.join(Sequel[:posts].as(:p), user_id: :id).
  select{[u[:id].as(:u_id), u[:name], u[:address],
          p[:id].as(:p_id), p[:user_id].as(:user_id), p[:content]]}

【讨论】:

    猜你喜欢
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    相关资源
    最近更新 更多