ホームページ  >  記事  >  データベース  >  MySQL concat() はクエリで使用される列名を作成しますか?

MySQL concat() はクエリで使用される列名を作成しますか?

PHPz
PHPz転載
2023-09-16 20:09:08676ブラウズ

MySQL concat() 创建要在查询中使用的列名?

クエリで使用する列名を作成するには、set コマンドでユーザー定義変数を使用する必要があります。構文は次のとおりです。 -

SET @anyVariableName :=
(
   SELECT CONCAT
   (
      "SELECT",
   GROUP_CONCAT(CONCAT(" 1 as ", COLUMN_NAME) SEPARATOR ','), " FROM DUAL")
   FROM INFORMATION_SCHEMA_COLUMNS
   WHERE TABLE_NAME= ‘yourTableName’
);

次に、PREPARE コマンドを使用してステートメントを準備します。構文は次のとおりです。 -

PREPARE anyVariableName from @anyVariableName;

EXECUTE コマンドを使用してステートメントを実行します。構文は次のとおりです。 -

EXECUTE anyVariableName;

DEALLOCATE コマンドを使用して、準備されたステートメントの割り当てを解除します。構文は次のとおりです。 -

DEALLOCATE PREPARE anyVariableName;

次に、2 つの列を持つテーブルを作成します。この列は結合クエリで使用されます。テーブルを作成するクエリは次のとおりです。 -

mysql> create table ConcatenationWithUserDefinedVariable
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> User_Id int,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (1.14 sec)

クエリで使用する列名には上記の構文を使用します。クエリは次のとおりです -

mysql> set @q := (
   -> select concat(
   -> "select",
   -> group_concat(concat(" 1 as ", column_name) separator ','),
   -> "from dual")
   -> from information_schema.columns
   -> where table_name = 'ConcatenationWithUserDefinedVariable');
Query OK, 0 rows affected (0.01 sec)

上記のユーザー定義変数を準備するためのクエリは次のとおりです -

mysql> prepare stmt from @q;
Query OK, 0 rows affected (0.00 sec)
Statement prepared

ここで、上で準備したステートメントを実行します。クエリは次のとおりです -

mysql> execute stmt;

以下は出力です -

+----+---------+
| Id | User_Id |
+----+---------+
|  1 |       1 |
+----+---------+
1 row in set (0.00 sec)

最後に、準備されたステートメントを解放する必要があります。クエリは次のとおりです -

mysql> deallocate prepare stmt;
Query OK, 0 rows affected (0.00 sec)

以上がMySQL concat() はクエリで使用される列名を作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。