【问题标题】:Dot notation in psql query - what is the difference?psql 查询中的点表示法 - 有什么区别?
【发布时间】:2020-04-14 19:33:38
【问题描述】:

在一些 Rails 代码中,我发现了以下几行:

User.where('created_at >= ?', '2018-10-10').count
# which results in:
SELECT COUNT(*) FROM "users" WHERE (created_at >= '2018-10-10')
=> 1234
User.where('users.created_at >= ?', '2018-10-10').count
# which results in:
SELECT COUNT(*) FROM "users" WHERE (users.created_at >= '2018-10-10')
=> 1234

使用WHERE users.created_atWHERE created_at有什么区别吗?

【问题讨论】:

  • 在这种情况下没有区别,但你指的是一个称为限定列名(或多部分标识符),如果你有 2 个表连接在一起,它们都有一个 created_at 列,你会需要在 where 子句中指定使用哪个created_at 列,否则会有歧义

标签: mysql ruby-on-rails postgresql


【解决方案1】:

在这种情况下没有区别。

您看到的虚线表示法称为限定列名

在示例查询中使用限定列名没有任何好处,因为您只有一个表。 created_at列属于哪个表一目了然。

但如果您使用 JOIN 等进行更复杂的查询,最好使用它们所属的表来限定每一列,以防多个表具有相同名称的列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2010-12-19
    • 2023-03-19
    相关资源
    最近更新 更多