有没有办法在与Postgres的独特复合PK上调用 count ?我收到以下错误,不知道为什么。
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)方法,我无法对其进行编辑,但在尝试找到解决方法之前,我需要确定是否做错了。
答案 0 :(得分:3)
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
答案 1 :(得分:2)
我认为你不能使用COUNT(col1, col2,...)
。这需要两个单独的COUNT(col1), COUNT(col2)
。因此我认为它不会对复合键起作用。
... count(字符变化,整数)不存在...
告诉你只是你不能使用该函数,因为它是无效的(虽然语法是正确的)
但是既然你正在使用复合PK,那么
SELECT COUNT(*) from table WHERE pk1 = XXX AND pk2 = YYY;
答案 2 :(得分:2)
您可以连接两列
SELECT COUNT(DISTINCT ("t".id||' '||"t".library_id))
FROM "ab_collection" "t"
WHERE t.library_id=1