MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

単一行および複数行のサブクエリとは何ですか?


単一行サブクエリ

単一行のサブクエリは、外部クエリの結果が単一の不明な値に基づいている場合に使用されます。このクエリタイプは正式には「単一行」と呼ばれますが、この名前は、クエリが複数の列を返すことを意味しますが、結果は1行のみです。ただし、単一行のサブクエリは、1つの列のみで構成される結果の1行のみを外部クエリに返すことができます。

以下のSELECTクエリでは、内部MySQLは1行のみ、つまり会社の最低給与を返します。次に、この値を使用してすべての従業員の給与を比較し、給与が最低賃金と等しい従業員のみを表示します。

SELECT first_name, salary, department_id
FROM employees
WHERE salary = (SELECT MIN (salary)
FROM employees);

HAVING句は、クエリのグループ結果を何らかの条件に基づいて制限する必要がある場合に使用されます。サブクエリの結果をグループ関数と比較する必要がある場合は、内部クエリを外部クエリのHAVING句にネストする必要があります。

SELECT department_id, MIN (salary)
FROM employees
GROUP BY department_id
HAVING MIN (salary) < (SELECT AVG (salary)
FROM employees)
複数行のサブクエリ

複数行のサブクエリは、親クエリに複数行の結果を返すことができるネストされたクエリです。複数行のサブクエリは、WHERE句とHAVING句で最も一般的に使用されます。複数の行を返すため、セット比較演算子(IN、ALL、ANY)で処理する必要があります。IN演算子は前の章で説明したのと同じ意味を持ちますが、ANY演算子は、指定された値をサブクエリによって返される各値と比較します。 ALLは、値をサブクエリによって返されるすべての値と比較します。以下のクエリでは、単一行のサブクエリが複数の行を返すため、エラーが表示されます。

SELECT first_name, department_id FROM employees WHERE department_id = (SELECT department_id FROM employees WHERE LOCATION_ID = 100)

  1. MySQLは1つのクエリで複数のレコードを更新しますか?

    まずテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> Marks1 int,    -> Marks2 int,    -> Marks3 int    -> ); Query OK, 0 rows affected (0.60 sec) 挿入コマンド-を使用して、テー

  2. C#の多重継承とは何ですか?

    C#は多重継承の使用をサポートしていませんが、インターフェイスを使用して実装できます。 以下は、インターフェイスを使用した継承の実装です。 2つのインターフェースを作成する- public interface BaseOne {    void display(); } public interface BaseTwo {    void display(); } 次に、派生クラスを設定するのと同じようにインターフェースを設定します。 public class ChildOne : BaseOne, BaseTwo {    pu