Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แสดงชื่อตารางทั้งหมดใน MySQL บนบรรทัดเดียวด้วย GROUP_CONCAT

ใช้ information_schema.tables ร่วมกับ GROUP_CONCAT() เพื่อดึงชื่อตารางทั้งหมดในฐานข้อมูลมาแสดงในแถวเดียว คั่นด้วยคอมม่า

คำสั่งดึงชื่อตารางทั้งหมดในฐานข้อมูล 'web'

mysql> select group_concat(table_name) 
from information_schema.tables 
where table_schema = 'web';

ผลลัพธ์ (ตัวอย่าง - รายการยาวมาก)

+----------------------------------------------------------------------------------------------------------------------------------+
| group_concat(table_name)                                                                                                         |
+----------------------------------------------------------------------------------------------------------------------------------+
| demo_table725,demotabe619,demotabe620,demotable211,demotable212,... (รายการต่อเนื่อง)                                          |
+----------------------------------------------------------------------------------------------------------------------------------+
1 row in set, 1 warning (0.01 sec)

คำอธิบาย:

  • information_schema.tables - ตารางระบบที่เก็บข้อมูลเมตาของทุกตาราง
  • table_schema = 'web' - กรองเฉพาะฐานข้อมูลชื่อ 'web'
  • GROUP_CONCAT(table_name) - รวมชื่อตารางทั้งหมดเป็นสตริงเดียว

ข้อควรระวัง: GROUP_CONCAT มีความยาวสูงสุดคือ group_concat_max_len (ค่าเริ่มต้น 1024 ตัวอักษร) หากตารางเยอะมาก อาจถูกตัดทอน ต้องตั้งค่า: SET SESSION group_concat_max_len = 1000000; ก่อนรันคำสั่ง

ทางเลือก: ใช้ SHOW TABLES FROM web; แทน ซึ่งจะคืนค่าเป็นหลายแถว แทนที่จะเป็นสตริงเดียว