3

有什么方法可以使用 Postgres 调用不同的复合 PK计数?我收到以下错误,不知道为什么。

SQL: SQLSTATE[42883]: Undefined function: 7 ERROR: function count(character varying, integer) does not exist LINE 1: SELECT COUNT(DISTINCT "t".id, "t".library_id) FROM "ab_colle... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.

任何帮助或建议表示赞赏。

编辑:

查询:

SELECT COUNT(DISTINCT "t".id, "t".library_id) 
  FROM "ab_collection" "t" 
 WHERE t.library_id=1

编辑:

我还应该注意,它是生成此代码的核心框架 (Yii) 方法,我无法对其进行编辑,但在尝试找到解决方法之前,我需要确定我是否做错了什么。

4

3 回答 3

5
SELECT COUNT(DISTINCT ROW("t".id, "t".library_id))
  FROM "ab_collection" "t" 
 WHERE t.library_id=1

从这里https://github.com/yiisoft/yii/issues/3004#issuecomment-27601733

于 2017-03-14T08:48:42.657 回答
2

您可以连接两列

SELECT COUNT(DISTINCT ("t".id||' '||"t".library_id)) 
  FROM "ab_collection" "t" 
 WHERE t.library_id=1
于 2013-10-30T09:44:10.867 回答
2

我不认为你可以使用COUNT(col1, col2,...). 这需要两个单独的 like COUNT(col1), COUNT(col2)。因此,我认为它不适用于复合键。

...计数(字符变化,整数)不存在...

简单地告诉你你不能使用这个函数,因为它是无效的(虽然语法是正确的)

但是既然你用的是复合PK,那怎么样

SELECT COUNT(*) from table WHERE pk1 = XXX AND pk2 = YYY;
于 2013-10-30T08:27:57.253 回答