2
我有一些懷疑與SUM()函數在MySQL中。當我使用沒有條件的SUM()函數時會正常工作。但是,如果我將使用條件SUM()函數它將返回匹配條件的記錄數。向我解釋這一點。mysql總和功能問題
我被創建了一個表老師有四列如下。
mysql> desc Teacher;
+--------------+-------------+------+-----+-------------------+
| Field | Type | Null | Key | Default |
+--------------+-------------+------+-----+-------------------+
| TeacherId | varchar(36) | NO | PRI | NULL |
| FirstName | varchar(50) | NO | | NULL |
| LastName | varchar(50) | NO | | NULL |
| SyncStatus | int(11) | NO | | NULL |
+--------------+-------------+------+-----+-------------------+
它包含以下記錄。
mysql> select * from Teacher;
+-----------+-----------+-----------+------------+
| TeacherId | FirstName | LastName | SyncStatus |
+-----------+-----------+-----------+------------+
| 001 | Sagar | Kapadia | 1 |
| 002 | Vishal | Chaudhari | 1 |
| 003 | Milan | Panchal | 1 |
| 004 | Jugal | Desai | 1 |
| 005 | Baburao | Apte | 1 |
| 006 | Jaya | Bacchan | 0 |
| 007 | Jaya | Bacchan | 2 |
| 008 | Jaya | Bacchan | 2 |
+-----------+-----------+-----------+------------+
8 rows in set (0.00 sec)
mysql> select TeacherId,FirstName,LastName,Concat(FirstName,' ',LastName) as FullName,SUM(SyncStatus) from Teacher having FullName like '_____ %';
+-----------+-----------+----------+---------------+-----------------+
| TeacherId | FIrstName | LastName | FullName | sum(SyncStatus) |
+-----------+-----------+----------+---------------+-----------------+
| 001 | Sagar | Kapadia | Sagar Kapadia | 9 |
+-----------+-----------+----------+---------------+-----------------+
1 row in set (0.00 sec)
那麼它將返回我的同步狀態完美的總和。但是,如果我將使用條件SUM()然後returen記錄的數量。
mysql> select TeacherId,FIrstName,LastName,Concat(FirstName,' ',LastName) as FullName,sum(SyncStatus = 0) from Teacher having FullName like '_____ %';
+-----------+-----------+----------+---------------+---------------------+
| TeacherId | FIrstName | LastName | FullName | sum(SyncStatus = 0) |
+-----------+-----------+----------+---------------+---------------------+
| 001 | Sagar | Kapadia | Sagar Kapadia | 1 |
+-----------+-----------+----------+---------------+---------------------+
1 row in set (0.00 sec)
mysql> select TeacherId,FIrstName,LastName,Concat(FirstName,' ',LastName) as FullName,sum(SyncStatus = 1) from Teacher having FullName like '_____ %';
+-----------+-----------+----------+---------------+---------------------+
| TeacherId | FIrstName | LastName | FullName | sum(SyncStatus = 1) |
+-----------+-----------+----------+---------------+---------------------+
| 001 | Sagar | Kapadia | Sagar Kapadia | 5 |
+-----------+-----------+----------+---------------+---------------------+
1 row in set (0.00 sec)
mysql> select TeacherId,FIrstName,LastName,Concat(FirstName,' ',LastName) as FullName,sum(SyncStatus = 2) from Teacher having FullName like '_____ %';
+-----------+-----------+----------+---------------+---------------------+
| TeacherId | FIrstName | LastName | FullName | sum(SyncStatus = 2) |
+-----------+-----------+----------+---------------+---------------------+
| 001 | Sagar | Kapadia | Sagar Kapadia | 2 |
+-----------+-----------+----------+---------------+---------------------+
1 row in set (0.00 sec)
謝謝@Ankur。我現在明白SUM()函數將如何執行。再一次感謝你...... – milanpanchal
剛剛遇到了這種確切的事情 - 它看起來像是在做我想做的事(在一個月內使用SUM返回一個動作完成的次數(確認= 1 )'帶'GROUP BY'),但我不確定這是它應該做的事 - 現在我知道了:) – CD001