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

MySQLの単一ステートメントで組み込みコマンド(\G・\g)とセミコロン(;)を両方使うには?

組み込みコマンド(\G および \g)は、コマンドをMySQLサーバーへ送信して実行させるためのものです。一方、セミコロン(;)は、ステートメントの終端を判定するためにMySQLが使用します。

これら3つすべてをエラーなく1つのステートメントで使い、結果を取得するには、\G で終わるクエリ、\g で終わるクエリ、そしてセミコロン(;)で終わるクエリの、計3つのクエリを1つのステートメント内に記述する必要があります。

mysql> Select * from student\G select * from ratelist\g select NOW();
*************************** 1. row ***************************
   Name: Gaurav
RollNo: 100
 Grade: B.tech
*************************** 2. row ***************************
   Name: Aarav
RollNo: 150
 Grade: M.SC
*************************** 3. row ***************************
   Name: Aryan
RollNo: 165
 Grade: M.tech
3 rows in set (0.00 sec)

+----+------+-------+
| Sr | Item | Price |
+----+------+-------+
| 1  | A    | 502   |
| 2  | B    | 630   |
| 3  | C    | 1005  |
| 4  | h    | 850   |
| 5  | T    | 250   |
+----+------+-------+
5 rows in set (0.00 sec)

+---------------------+
| NOW()               |
+---------------------+
| 2017-11-06 18:04:12 |
+---------------------+
1 row in set (0.00 sec)

上記の例では、MySQLステートメントはまず最初のクエリの後にある \G を検出し、それに基づいて結果セットを縦型(垂直)形式で出力します。続いて、2番目のクエリの後にある \g を検出すると、表形式で結果セットを出力します。最後にセミコロン(;)を検出すると、こちらも表形式で結果を出力します。

各終端記号の違い

  • \G: 結果を縦方向(カラム名と値を1行ずつ)で表示します。カラム数が多い場合や値が長い場合に読みやすくなります。
  • \g: セミコロン(;)とほぼ同等の役割を持ち、結果は表形式で表示されます。
  • ;: 通常のステートメント終端記号であり、結果は標準的な表形式で表示されます。

このように、組み込みコマンドとセミコロンを適切に配置すれば、1つのMySQLステートメントの中で3種類すべてを組み合わせて使用することができます。

  1. MySQLの単一クエリでCOUNT()とIF()を組み合わせる方法

    はじめにMySQLでは、COUNT()関数とIF()関数を1つのクエリ内で組み合わせることで、特定の条件に一致するレコード数を効率的に集計できます。この記事では、ブール型(boolean)のカラムを持つテーブルを例に、「値が1であるレコードの総数」を取得する方法を段階的に解説します。1. サンプルテーブルの作成まず、boolean型のカラムを持つテーブルを作成します。mysql> create table DemoTable(    isValidUser boolean);Query OK, 0 rows affected (0.70 sec)M

  2. MySQLのORDER BY FIELDを使って特定の値を優先し、ID順に並べ替える方法

    はじめにMySQLでは、ORDER BY FIELD() を活用することで、特定の値を持つレコードを最優先で表示しつつ、残りのレコードをIdなどの別の列基準で並べ替えることができます。この記事では、実際のサンプルコードを通してその手順をわかりやすく解説します。サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> ); Query OK, 0 rows affected (1.78 sec)次に、I