如何通过SELECT查询为SQL视图添加表长度列len_table
为视图添加表长度列的解决方案
方法1:使用窗口函数(推荐)
这是最简洁高效的方式,直接通过窗口函数在每行返回整个表的总行数:
SELECT "Primary key", attr1, attr2, attr3, attr4, COUNT(*) OVER() AS len_table FROM your_view_name;
COUNT(*) OVER()会计算当前查询结果集的总行数,然后将这个值填充到每一行的len_table列中,不需要额外的关联操作。
方法2:交叉连接子查询(兼容旧版SQL)
如果你的SQL环境不支持窗口函数,可以用交叉连接的方式,先单独计算总条数再和原表关联:
SELECT t."Primary key", t.attr1, t.attr2, t.attr3, t.attr4, cnt.len_table FROM your_view_name t CROSS JOIN (SELECT COUNT(*) AS len_table FROM your_view_name) cnt;
子查询(SELECT COUNT(*) AS len_table FROM your_view_name)先算出表的总条数,然后通过CROSS JOIN把这个单行结果和原表的每一行进行匹配,让所有行都带上总条数。
为什么你之前的方法失效?
你尝试用count(*)后关联失败,是因为单独执行count(*)只会返回一个单行单列的数值,没有可以和原表匹配的关联字段。上面两种方法要么通过窗口函数直接生成列,要么通过交叉连接自动匹配所有行,解决了这个问题。
内容的提问来源于stack exchange,提问作者coderman
相关产品推荐
相关产品推荐

