MySQLサブクエリとマルチテーブル結合クエリ

サブクエリ:データソースまたは別のクエリの条件としての1つのクエリの結果です。

最高の給与を持つ人の名前を見つける方法は?

mysql> empからmax(sal)を選択します-最大給与のクエリ
+ ---------- + 
| max(sal)| 
+ ---------- + 
| 5000.00 | 
+ ---------- + 
セット内の1行(0.00秒)

mysql> enameを選択、empからsal、sal =(empから最大(sal)を選択);-最大賃金が最も高くなる可能性があるフィルター条件、select ename、sal from empは実行後にsal salに割り当てられます(select max(sal)from emp); 
+ ------- + --------- + 
| ename | sal | 
+ ------- + --------- + 
| KING | 5000.00 | 
+ ------- + --------- + 
1行セット( 0.32秒)

mysql> select ename、sal from emp where sal =(select min(sal)from emp);-最小給与のクエリ
+ ------- + -------- + 
| ename | sal | 
+ ------- + -------- + 
| SMITH | 800.00 | 
+ ------- + -------- +
セット内の1行(0.00秒)

サブクエリの状況;クエリ結果を別のクエリの条件として使用する

企業が経営している人々を持ってチェックしてください。に対応するものを参照マネージャーが誰であるか、EMPNO MGRがフィールドに表示されます

mysql> empからmgrを選択します。查询
+ ------ + 
| mgr | 
+ ------ + 
| 7902 | 
| 7698 | 
| 7698 | 
| 7839 | 
| 7698 | 
| 7839 | 
| 7839 | 
| 7566 | 
| NULL | 
| 7698 | 
| 7788 | 
| 7698 | 
| 7566 | 
| 7782 | 
| NULL | 
+ ------ + 
15行のセット(0.00秒)

mysql> empから個別のマネージャーを選択します。-去重
+ ------ + 
| mgr | 
+ ------ + 
| 7902 | 
| 7698 | 
| 7839 | 
| 7566 | 
| NULL | 
| 7788 | 
| 7782 | 
+ ------ + 
7行のセット(0.00秒)

mysql> mgrがnullではないempから個別のmgrを選択します---null値を削除します。このステートメントによって取得される情報は、empフィールドに表示されるempnoです
+ ------ + 
| mgr | 
+- + ----- 
| 7902 | 
| 7698 | 
| 7839 | 
| 7566 | 
| 7788 | 
| 7782 | 
+ ------ + 
。6行のSET(0.01秒)で
のMySQL> SELECT ENAME、EMP WHERE empmoからempmo in(empから個別のmgrを選択);-会社の
どのユーザーがキーワードでマネージャーであるかを問い合わせます
+ ------- + ------- + | ename | empmo | 
+ ---- + ------- + --- 
| JONES | 7566 | 
| BLAKE | 7698 | 
| CLARK | 7782 | 
| SCOTT | 7788 | 
| KING | 7839 | 
| FORD | 7902 | 
+ ------- + ------- + 
6行セット(0.00秒)
mysql> empmoからempからename、empmoを選択します(mgrがnullではないempから個別のmgrを選択します); 
+ ------- + ------- + 
| ename | empmo | 
+ ------- + ------- + 
| ジョーンズ| 7566 | 
| ブレイク| 7698 | 
| CLARK | 7782 | 
| SCOTT | 7788 | 
| キング| 7839 | 
| フォード| 7902 | 
+ ------- + ------- + 
6行のセット(0.00秒)

注:上記の2つのケースでは、クエリ全体の1つの結果が別のクエリの条件として使用されます。条件として使用される場合、ここでは同等の比較と inが使用されます。 。平均給与が最も高い部門はどこですか?

1.各部門の平均給与を最初にチェックアウトする必要があります。グループ関数はネストできません。

別のクエリのデータソースとして、クエリ結果はテーブルと見なすことができます。

注:テーブルになるプロセスでエイリアスを使用する必要があります

mysql> select avg(sal)、deptno by emp group by deptno;-平均給与と対応する部門番号をクエリします
+ ------------- + -------- + 
|平均(sal)| deptno | 
+ ------------- + -------- + 
| 2356.540000 | NULL | 
| 2916.666667 | 10 | 
| 2175.000000 | 20 | 
| 1566.666667 | 30 | 
+ ------------- + -------- + 
4行セット(0.00秒)    

MySQLマルチテーブル共同クエリ

従業員の名前と従業員の部門の名前を照会します 

mysql> emp、deptからename、DNAMEを選択します。
+ ------------ + ------------ + 
| ename | DNAME | 
+ ------------ + ------------ + 
| スミス| 会計| 
| スミス| 研究| 
| スミス| 販売| 
| スミス| オペレーション| 
| アレン| 会計| 
| アレン| 研究| 
| アレン| 販売| 
| アレン| オペレーション| 
| ワード| 会計| 
| ワード| 研究| 
| ワード| 販売| 
| ワード| オペレーション| 
| ジョーンズ| 会計| 
| ジョーンズ| 研究| 
| ジョーンズ| 販売| 
| ジョーンズ| オペレーション|
| マーティン| 会計| 
| マーティン| 研究| 
| マーティン| 販売| 
| マーティン| オペレーション| 
| ブレイク| 会計| 
| ブレイク| 研究| 
| ブレイク| 販売| 
| ブレイク| オペレーション| 
| CLARK | 会計| 
| CLARK | 研究| 
| CLARK | 販売| 
| CLARK | オペレーション| 
| SCOTT | 会計| 
| SCOTT | 研究| 
| SCOTT | 販売| 
| SCOTT | オペレーション| 
| キング| 会計| 
| キング| 研究| 
| キング| 販売| 
| キング| オペレーション|
| ターナー| 会計| 
| 張| 会計|
| ターナー| 研究|
| ターナー| 販売| 
| ターナー| オペレーション| 
| ADAMS | 会計| 
| ADAMS | 研究| 
| ADAMS | 販売| 
| ADAMS | オペレーション| 
| ジェームス| 会計| 
| ジェームス| 研究| 
| ジェームス| 販売| 
| ジェームス| オペレーション| 
| フォード| 会計| 
| フォード| 研究| 
| フォード| 販売| 
| フォード| オペレーション| 
| ミラー| 会計| 
| ミラー| 研究| 
| ミラー| 販売| 
| ミラー| オペレーション| 
| 張| 研究| 
| 張| 販売|
| 張| オペレーション| 
+ ------------ + ------------ + 
60行のセット(0.29秒)

デカルト積

(14 * 4)empの各データは、deptテーブルの各データと結合されます。それは56データです。

 マルチテーブル共同クエリ

2つのテーブルの deptnoは等しい

mysql> emp.deptno = dept.deptno;のemp、deptからename、DNAMEを選択します。
+ -------- + ------------ + 
| ename | DNAME | 
+ -------- + ------------ + 
| スミス| 研究| 
| アレン| 販売| 
| ワード| 販売| 
| ジョーンズ| 研究| 
| マーティン| 販売| 
| ブレイク| 販売| 
| CLARK | 会計| 
| SCOTT | 研究| 
| キング| 会計| 
| ターナー| 販売| 
| ADAMS | 研究| 
| ジェームス| 販売| 
| フォード| 研究| 
| ミラー| 会計| 
+ -------- + ------------ + 
14行のセット(0.01秒)

  

カテゴリJ OIN = リンクと  ON = 条件、クエリ ENAME DNAMEとEMPおよびDEPTテーブルクエリで、EMP.DEPTNO = DEPT.DEPTNOに対応するデータ  

mysql> emp.deptno = dept.deptnoのemp join deptからename、dnameを選択します。
+ -------- + ------------ + 
| ename | dname | 
+ -------- + ------------ + 
| スミス| 研究| 
| アレン| 販売| 
| ワード| 販売| 
| ジョーンズ| 研究| 
| マーティン| 販売| 
| ブレイク| 販売| 
| CLARK | 会計| 
| SCOTT | 研究| 
| キング| 会計| 
| ターナー| 販売| 
| ADAMS | 研究| 
| ジェームス| 販売| 
| フォード| 研究| 
| ミラー| 会計| 
+ -------- + ------------ + 
14行のセット(0.00秒)

個人の名前、部門、給与レベルを照会する

mysql> emp.deptno = dept.deptnoとemp.salのemp結合dept結合salgradeからename、DNAME、GRADEを選択し、losalとhisalの間で選択します。
+ -------- + ------------ + ------- + 
| ename | DNAME | グレード| 
+ -------- + ------------ + ------- + 
| スミス| 研究| 1 | 
| ADAMS | 研究| 1 | 
| ジェームス| 販売| 1 | 
| ワード| 販売| 2 | 
| マーティン| 販売| 2 | 
| ミラー| 会計| 2 | 
| アレン| 販売| 3 | 
| ターナー| 販売| 3 | 
| ジョーンズ| 研究| 4 | 
| ブレイク| 販売| 4 | 
| CLARK | 会計| 4 | 
| SCOTT | 研究| 4 |
| フォード| 研究| 4 |
| キング| 会計| 5 | 
+ -------- + ------------ + ------- + 
14行のセット(0.01秒)

  

 

おすすめ

転載: www.cnblogs.com/rdchenxi/p/12683749.html