サブクエリ:データソースまたは別のクエリの条件としての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秒)