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

MySQL LEFTJOINを使用してMySQLMINUSクエリをシミュレートするにはどうすればよいですか?


MySQLではMINUSクエリを使用できないため、LEFTJOINを使用してMINUSクエリをシミュレートします。次の例の助けを借りて理解することができます:

この例では、Student_detailとStudent_infoという2つのテーブルがあり、次のデータがあります-

mysql> Select * from Student_detail;
+-----------+---------+------------+------------+
| studentid | Name    | Address    | Subject    |
+-----------+---------+------------+------------+
| 101       | YashPal | Amritsar   | History    |
| 105       | Gaurav  | Chandigarh | Literature |
| 130       | Ram     | Jhansi     | Computers  |
| 132       | Shyam   | Chandigarh | Economics  |
| 133       | Mohan   | Delhi      | Computers  |
| 150       | Rajesh  | Jaipur     | Yoga       |
| 160       | Pradeep | Kochi      | Hindi      |
+-----------+---------+------------+------------+
7 rows in set (0.00 sec)

mysql> Select * from Student_info;
+-----------+-----------+------------+-------------+
| studentid | Name      | Address    | Subject     |
+-----------+-----------+------------+-------------+
| 101       | YashPal   | Amritsar   | History     |
| 105       | Gaurav    | Chandigarh | Literature  |
| 130       | Ram       | Jhansi     | Computers   |
| 132       | Shyam     | Chandigarh | Economics   |
| 133       | Mohan     | Delhi      | Computers   |
| 165       | Abhimanyu | Calcutta   | Electronics |
+-----------+-----------+------------+-------------+
6 rows in set (0.00 sec)

ここで、LEFT JOINを使用した次のクエリは、MINUSをシミュレートして、student_infoでは「studentid」値を返しますが、Student_detailテーブルでは返しません。

mysql> SELECT studentid from student_info LEFT JOIN Student_detail USING(studentid) WHERE student_detail.studentid IS NULL;
+-----------+
| studentid |
+-----------+
|       165 |
+-----------+
1 row in set (0.07 sec)

次のクエリでは、上記のクエリとは逆の結果が得られます。つまり、student_detailテーブルでは「studentid」値が返されますが、Student_infoテーブルでは返されません。

mysql> SELECT studentid from student_detail LEFT JOIN Student_info USING(studentid) WHERE student_info.studentid IS NULL;
+-----------+
| studentid |
+-----------+
|       150 |
|      160  |
+-----------+
2 rows in set (0.00 sec)

  1. MySQLクライアントで使用されている接続方法を確認するにはどうすればよいですか?

    MySQL接続で使用される接続方法を決定するには、以下のコマンドを使用できます- netstat −ln | grep 'mysql' Unixでは、MySQLプログラムはホスト名「localhost」を特別な方法で扱います。したがって、期待される動作とは異なる動作をします。 接続の種類 mysql CLI内から接続のタイプを知るには、以下のコマンドを使用できます- mysql> \s 出力- Connection: 127.0.0.1 via TCP/IP (or) Connection: Localhost via UNIX socket ローカル

  2. MySQLでselectクエリによって取得された結果をどのように並べ替えることができますか?

    テーブルから特定のデータまたは行を選択するのが一般的です。行は、テーブルに表示される順序で返されます。テーブルから選択した行を、ある列に対して昇順または降順で返す必要がある場合があります。 「ORDERBY」ステートメントは、ある列に関して結果を並べ替えるために使用されます。次の例は、より明確になります。 「name」フィールドを含むさまざまなフィールドで構成されるテーブルがあるとします。テーブルからすべての行を選択しますが、行は名前のアルファベット順に並べる必要があります。ここで「ORDERBY」ステートメントが機能します。このシナリオでは、結果を「名前」フィールドの昇順で並べ替える必要