如何用PostgreSQL统计Northwind数据库中的表行数?
解决PostgreSQL统计Northwind数据库表行数的问题
你的代码返回1的核心原因:
select * from products into produk;只会把products表的第一行数据赋值给produk变量,因为products%rowtype是单一行的类型,只能存储一条记录。count(produk)是统计这个单个变量的数量,结果必然是1,完全没统计到表的总行数。
最简单高效的解决方法(直接用SQL)
不需要用PL/pgSQL,直接执行普通SQL就能得到正确行数:
SELECT COUNT(*) FROM products;
如果要统计某列非空的行数(比如排除product_id为NULL的情况),可以指定列名:
SELECT COUNT(product_id) FROM products;
必须用PL/pgSQL的写法
如果业务场景要求用匿名块实现,需要用变量存储统计结果,而不是读取整行数据:
DO $$ DECLARE row_count INTEGER; BEGIN SELECT COUNT(*) INTO row_count FROM products; RAISE NOTICE 'products表总行数:%', row_count; END; $$
内容的提问来源于stack exchange,提问作者gunzxx
相关产品推荐
相关产品推荐

