在postgresql中与下面的sql语句等价的是什么?



我有以下SQL语句在MySql数据库中执行,并且它成功工作

cursor.execute("""SELECT COUNT(*), `deleted` FROM `tweets` WHERE `id` = %s""", (tweet['id'],))

postgres database中的等价物是什么?尝试下面的

cursor.execute("""SELECT COUNT(*), deleted FROM tweets WHERE id = %s""", (tweet['id'],))

失败,出现错误

ERROR: ERROR:  column "tweets.deleted" must appear in the GROUP BY clause or be used in an aggregate function

我不确定我应该在哪里添加GROUP BY条款。如有任何帮助,不胜感激。

语句:

SELECT COUNT(*), `deleted`
FROM `tweets`
WHERE `id` = %s

在任何数据库中都是畸形的,包括MySQL,因为SELECT列混合了聚合函数和非聚合函数,没有GROUP BY

旧版本的MySQL接受这种语法(一个很高兴被修复的疏忽!)deleted的值来自任意行。因此,您可以使用deleted的任何值来匹配该功能。因此,使用聚合函数:

SELECT COUNT(*), MAX(deleted) as deleted
FROM `tweets`
WHERE `id` = %s

最新更新