Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Không thể tính tổng tích lũy `COUNT (*) '

Tôi đồng ý với @Ashalynd, giá trị của count (*) chưa được đánh giá. Đây là một thử nghiệm nhỏ tôi đã làm:

1.
    SELECT
        GROUP_ID,    
        @COUNTER := @COUNTER + COUNT(*)  GROUPCOUNT,
        @COUNTER COUNTER
     FROM
        TEST_GROUP_CUMULATIVE, 
        (SELECT @COUNTER := 0) R
    GROUP BY
        GROUP_ID;

-- RESULT
============

   GROUP_ID    GROUPCOUNT    COUNTER
  ------------------------------------     
   1           1             0
   2           1             0
   3           1             0

2.
    SELECT @COUNTER;

    -- RESULT
    =============

    @COUNTER
    --------
    1

Đối với mỗi nhóm, biến đang được khởi tạo là 0. Điều này có nghĩa là COUNT (*) chưa được đánh giá.

Ngoài ra, khi bạn thực hiện:

 1.
    SELECT
        GROUP_ID,    
        @COUNTER := @COUNTER + 1  GROUPCOUNT,
        @COUNTER COUNTER
     FROM
        TEST_GROUP_CUMULATIVE, 
        (SELECT @COUNTER := 0) R
    GROUP BY
        GROUP_ID;

-- RESULT
============
   GROUP_ID    GROUPCOUNT    COUNTER
  ------------------------------------     
   1           1             1
   2           1             2
   3           1             3

2.    
SELECT @COUNTER;

    -- RESULT
    =============

    @COUNTER
    --------
    3

Nó không phải đánh giá 1. Nó tổng hợp trực tiếp và nó cung cấp cho bạn tổng tích lũy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để xuất một chuỗi Base64 sang một tệp, trên phía máy chủ, mà không cần lưu nó trong máy chủ web, trực tiếp bằng PHP?

  2. Quy ước đặt tên MySQL, tên trường có nên bao gồm tên bảng không?

  3. Làm cách nào để tạo cơ sở dữ liệu MySql bằng shell_exec php?

  4. Không thể khởi động máy chủ trong đường ray với mysql db

  5. Câu lệnh trường hợp với điều kiện where trong SQL