您好,登錄后才能下訂單哦!
MySQL中怎么利用group_distinct獲取總記錄數,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
MySQL_使用group_distinct后_如何得到總記錄數(行數)
問題: 使用了group或者distinct等后,如何得到查詢結果的總記錄數? --要求,不使用子查詢
分析:
如果沒有group,count(*) 就可以了。
但是,使用了就不同了。里使用統計函數,針對的是group。
這個時候,如何得到查詢結果記錄總數,是個問題。
可行性分析:
這個問題有解么?如果不可能的事情,就別搞了,例如永動機,3等分等問題。
在的終端查詢結果:
mysql> select tag_id from labels where 1 = 1 group by tag_id;
+--------+
| tag_id |
+--------+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 6 |
| 9 |
| 11 |
| 22 |
| 54 |
+--------+
10 rows in set (0.00 sec)
最后居然有個數:10 rows
既然終端都有了,那應該有個地方存儲。(推測mysql不會自己去再查一次,因為自己就握有結果)
解決方案: 使用found_rows函數
mysql> select found_rows();
+--------------+
| found_rows() |
+--------------+
| 10 |
+--------------+
1 row in set (0.00 sec)
可能問題:
在多線程的情況下,會有問題么。
Java中,多個線程共同持有一個connection時,會發生問題。
t1查詢select tag_id from labels where 1 = 1 group by tag_id;
t2查詢別的
t1查詢select found_rows();
這樣得到的是t2的查詢結果。
在Hibernate等線程池的情況下,每個線程會一直持有當前的connection直到線程結束。
這樣的話,每個線程的connection是不同的,不會發生沖突。
但必須保證兩個語句之間別有別的查詢sql執行。
其他:
ROW_COUNT()可以查看上次update操作影響的行數。
====END====
關于MySQL中怎么利用group_distinct獲取總記錄數問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。