連合:
結果セットの2つの以上の組み合わせに接続されているMySQLのUNION演算子SELECT文の結果。複数のSELECT文では、重複データを削除します。
SELECT culomns1, culomns2 FROM tables_name1 [WHERE conditions]
UNION [ALL | DISTINCT]
SELECT culomns1, culomns2 FROM tables_name2 [WHERE conditions];
DISTINCT:オプション、データセットの結果を複製削除します。デフォルトでは、UNION演算子は、重複データを削除しているので、結果DISTINCT修飾子何の影響。
ALL:代わりに、重複したデータが含まれているすべての結果セットを返します。
例:
ウェブサイトやアプリ:これらの2つのテーブルです
mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | 淘宝 | https://www.taobao.com/ | 13 | CN |
| 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
| 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND |
+----+---------------+---------------------------+-------+---------+
mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name | url | country |
+----+------------+-------------------------+---------+
| 1 | QQ APP | http://im.qq.com/ | CN |
| 2 | 微博 APP | http://weibo.com/ | CN |
| 3 | 淘宝 APP | https://www.taobao.com/ | CN |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)
ステートメントを実行します。
SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;
結果を取得します。
ステートメントを実行します:(すべてで)
SELECT country FROM Websites
UNION ALL
SELECT country FROM apps
ORDER BY country;
結果を取得します。
ソートBY ORDER:
声明:
SELECT columns1, columns2 from table_name1, table_name2
ORDER BY columns1, [columns2...] [ASC [DESC]]
- 任意フィールドは、それによってソートされたクエリの結果を返す、ソート条件として使用することができます。
- 複数のフィールドを設定することはソートすることができます。
- ASCまたはDESCキーワードは、昇順または降順で検索結果を設定するために使用することができます。デフォルトでは、昇順です。
- あなたは条件を設定するには... LIKE句を追加することができます。
MySQLのアルファベット順
使用される文字セットは、GBK(中国語文字セットのエンコード)である場合は、クエリでORDER BYの後ろに直接コメントを追加しました:
SELECT * FROM table_name
ORDER BY columns_name;
使用される文字セットは、UTF8(ユニコード)である場合は、並べ替え、その後、フィールド上でトランスコードし、する必要があります
SELECT * FROM table_name
ORDER BY CONVERT(columns_name using gbk);
グループBY GROUP:
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
例:
次の表があります。
mysql> set names utf8;
mysql> SELECT * FROM employee_tbl;
+----+--------+---------------------+--------+
| id | name | date | singin |
+----+--------+---------------------+--------+
| 1 | 小明 | 2016-04-22 15:25:33 | 1 |
| 2 | 小王 | 2016-04-20 15:25:47 | 3 |
| 3 | 小丽 | 2016-04-19 15:26:02 | 2 |
| 4 | 小王 | 2016-04-07 15:26:14 | 4 |
| 5 | 小明 | 2016-04-11 15:26:40 | 4 |
| 6 | 小明 | 2016-04-04 15:26:54 | 2 |
+----+--------+---------------------+--------+
6 rows in set (0.00 sec)
データテーブルは、GROUP BYステートメントとの名でグループ化され、それぞれの人のための統計がどのように多くのレコードがされています。
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;
+--------+----------+
| name | COUNT(*) |
+--------+----------+
| 小丽 | 1 |
| 小明 | 3 |
| 小王 | 2 |
+--------+----------+
3 rows in set (0.01 sec)
ROLLUPと使用
ROLLUP WITHパケット内の統計データに基づいて(SUM、AVGは、COUNT ...)その後、同じ統計を達成することができます。
たとえば、私たちは名前でグループ化された複数のデータテーブルも、その後、登録されているそれぞれの人の数をカウントします。
mysql> SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
+--------+--------------+
| name | singin_count |
+--------+--------------+
| 小丽 | 2 |
| 小明 | 7 |
| 小王 | 7 |
| NULL | 16 |
+--------+--------------+
NULLは、すべてのログインを記録しているかを示します。
構文を合体、名前を置き換えることができますあなたは、NULLを設定するためにCOALESCEを使用することができます。
select coalesce(a,b,c);
パラメータ:! == NULLの場合、Bが選択されると、b == nullの場合、Cが選択され; = nullの場合、選択し; ABCがヌルである場合、リターン(意味無し)ヌルです。
我々は代わりの総数の使用名が空の場合、以下の例:
mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
+--------------------------+--------------+
| coalesce(name, '总数') | singin_count |
+--------------------------+--------------+
| 小丽 | 2 |
| 小明 | 7 |
| 小王 | 7 |
| 总数 | 16 |
+--------------------------+--------------+