Rumah > pangkalan data > tutorial mysql > MySQL concat() mencipta nama lajur untuk digunakan dalam pertanyaan?

MySQL concat() mencipta nama lajur untuk digunakan dalam pertanyaan?

PHPz
Lepaskan: 2023-09-16 20:09:08
ke hadapan
738 orang telah melayarinya

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

Untuk mencipta nama lajur untuk digunakan dalam pertanyaan, anda perlu menggunakan pembolehubah yang ditentukan pengguna melalui arahan yang ditetapkan. Sintaks adalah seperti berikut -

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

Sekarang gunakan arahan PREPARE untuk menyediakan pernyataan. Sintaksnya adalah seperti berikut -

PREPARE anyVariableName from @anyVariableName;
Salin selepas log masuk

Gunakan arahan EXECUTE untuk melaksanakan pernyataan. Sintaksnya adalah seperti berikut -

EXECUTE anyVariableName;
Salin selepas log masuk

Gunakan arahan DEALLOCATE untuk menyamakan kedudukan kenyataan yang disediakan. Sintaksnya adalah seperti berikut -

DEALLOCATE PREPARE anyVariableName;
Salin selepas log masuk

Kami kini akan mencipta jadual dengan dua lajur dan lajur ini akan digunakan dalam pertanyaan gabungan. Pertanyaan untuk mencipta jadual adalah seperti berikut -

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

Gunakan sintaks di atas untuk nama lajur yang akan digunakan dalam pertanyaan. Pertanyaannya adalah seperti berikut -

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)
Salin selepas log masuk

Menyediakan pertanyaan untuk pembolehubah yang ditentukan pengguna di atas adalah seperti berikut -

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

Sekarang laksanakan pernyataan yang disediakan di atas. Pertanyaannya adalah seperti berikut -

mysql> execute stmt;
Salin selepas log masuk

Berikut adalah output -

+----+---------+
| Id | User_Id |
+----+---------+
|  1 |       1 |
+----+---------+
1 row in set (0.00 sec)
Salin selepas log masuk

Akhir sekali, anda perlu mengeluarkan kenyataan yang disediakan. Pertanyaannya adalah seperti berikut -

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

Atas ialah kandungan terperinci MySQL concat() mencipta nama lajur untuk digunakan dalam pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan