做實驗的表:
mariadb [test]> select * from prefix_user;
| user_id | username | age | email |
| 2 | username2 | 2 | null |
| 3 | username3 | 111 | 1 |
| 4 | username3 | 10 | 1 |
| 5 | username3 | 10 | null |
| 6 | username3 | 10 | null |
5 rows in set (0.01 sec)
一般情況:
直接用count() 函式
select count(*) from 表 where 條件;
或者select count(主鍵) from 表 where 條件;
其中主鍵和*的區別主要是: * 會統計 null 的行,
select count(*) from prefix_user where 1; // 5行
select count(email) from prefix_user ;// 2行,忽略了值為null的
當和group by 混用的時候, count() 函式返回的結果是group by之後的結果,例如
mariadb [test]> select count(*) from prefix_user group by age;
| count(*) |
| 1 |
| 3 |
| 1 |
3 rows in set (0.01 sec)
如果我們想獲取總共有多少個年齡不同的行數,有兩種解決方案,
第一種, 使用子語句
select count(*) from ( select count(*) from prefix_user group by age) as a;// 結果為3
// 不使用 sql_calc_found_rows
mariadb [test]> select count(*) from prefix_user group by age limit 2;
| count(*) |
| 1 |
| 3 |
2 rows in set (0.00 sec)
mariadb [test]> select found_rows();
| found_rows() |
| 3 |
1 row in set (0.00 sec)
// 使用 sql_calc_found_rows 關鍵字
mariadb [test]> select sql_calc_found_rows count(*) from prefix_user group by age limit 2;
| count(*) |
| 1 |
| 3 |
2 rows in set (0.00 sec)
mariadb [test]> select found_rows();
| found_rows() |
| 3 |
1 row in set (0.00 sec)
mysql 表查詢結果 總行數計算
一般的查詢語句是這樣的 select id,name from systemevents where 1 1 limit 9,10 select from systemevents where 1 1 limit 9,10 這樣查詢出來的結果 要統計行數很麻煩 有乙個方法可以將上次查詢的結果 統計出...
MySQL中查詢表的總行數該用什麼命令?
我們經常會使用到乙個sql語句,就是查詢某張表的總行數。常常使用的查詢命令有幾種,比如 select count from t,select count id from t id為主鍵 select count 1 from t,select count 某普通字段 from t以及show tab...
mysql 查詢表總行數字段 天使數字查詢表
時間數字 00 00 此刻,你與神同在。01 01 神正在與你對話,請保持正向。02 02 一切都會安好,請保持信任。03 03 事物現在正準備為了你往前移動。04 04 現在正是落實計畫的好時機,然後與它一起飛翔。05 05 乙個重要的改變正在發生。06 06 將你周圍需要的協助與合作凝聚起來。0...