PostgreSQL查询在SELECT列引用中有=运算符,这种语法是什么意思?

时间:2016-08-06 17:00:38

标签: postgresql sqlalchemy

SQLALchemy为我生成了以下查询:

SELECT count(client.id = user_accounting_journal_entry.client_id) AS count_1 
FROM client, user_accounting_journal_entry
WHERE user_accounting_journal_entry.kind = 'debit' 
GROUP BY client.name = user_accounting_journal_entry.client_id

注意里面的部分选择:count(client.id = user_accounting_journal_entry.client_id)

主要使用MySQL,我不熟悉这种语法,并且很难找到文档。

2 个答案:

答案 0 :(得分:0)

您应该熟悉MySQL的语法,至少以这种形式:

select sum(client.id = user_accounting_journal_entry.client_id)

这将计算匹配数。

count()版本计算表达式不是NULL的次数。或者等效,它计算两个值都不是NULL的次数。 。 。看起来很奇怪的东西。更常见的是Postgres,我希望:

select sum((client.id = user_accounting_journal_entry.client_id)::int)

这会将布尔值转换为整数,从而计算匹配数。

查询本身很糟糕:

  • 它没有使用正确的join语法
  • 表之间的join条件看起来不正确(ID的名称)
  • 按布尔条件分组

此外,它看起来并不像是在做一些非常有用的事情。

答案 1 :(得分:0)

count(client.id = user_accounting_journal_entry.client_id)计数表达式不为空的次数。