概要
SQLでSELECTの結果をカウントする方法を記録しておきます。SELECTの結果を数えるには、COUNT関数を使用します。
方法
test_table
のレコード数を調べる
SELECT COUNT(*) FROM test_table;
test_table
のtestカラム
の重複を回避したいとき
SELECT COUNT(DISTINCT test) FROM test_table;
詳細
上記のSELECTを叩いたテーブル
MariaDB [testdb]> desc test_table;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| test | varchar(50) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.017 sec)
テーブルのデータ
MariaDB [testdb]> select * from test_table;
+----+--------+
| id | test |
+----+--------+
| 1 | Data 1 |
| 2 | Data 2 |
| 3 | Data 3 |
| 4 | Data 4 |
| 5 | Data 5 |
| 6 | Data 6 |
| 7 | Data 3 |
| 8 | Data 7 |
| 9 | Data 8 |
| 10 | Data 3 |
+----+--------+
10 rows in set (0.001 sec)
COUNT関数
をしてみると、データの通りレコード数10件がカウントできている事がわかる。
MariaDB [testdb]> SELECT COUNT(*) FROM test_table;
+----------+
| COUNT(*) |
+----------+
| 10 |
+----------+
1 row in set (0.005 sec)
また、重複項目(IDが3,7,10)を回避してカウントしてみるとちゃんと8件になっていることがわかる。
MariaDB [testdb]> SELECT COUNT(DISTINCT test) FROM test_table;
+----------------------+
| COUNT(DISTINCT test) |
+----------------------+
| 8 |
+----------------------+
1 row in set (0.001 sec)
今回のデータの作成方法
今回は簡単なテーブルで試しましたが、一応作成方法も載せておきます。
- databaseの作成
-- データベースの作成
CREATE DATABASE my_database;
USE my_database;
- tableの作成
-- テーブルの作成
CREATE TABLE test_table (
id INT PRIMARY KEY AUTO_INCREMENT,
test VARCHAR(50)
);
- データのインサート
-- データのインサート
INSERT INTO my_database.test_table (test)
VALUES
('Data 1'),
('Data 2'),
('Data 3'),
('Data 4'),
('Data 5'),
('Data 6'),
('Data 3'), -- 重複する項目
('Data 7'),
('Data 8'),
('Data 3'); -- 重複する項目
まとめ
今回SQLでCOUNT関数の基本的な使用方法を記載しました。SQLは色々と自分でいじってみるのが一番の勉強法だと思うので、テーブルを実際に作成してみて色々と試してみてください。