มีวิธีที่รวดเร็วในการรับชื่อคอลัมน์ทั้งหมดจากตารางทั้งหมดMySQL
โดยไม่ต้องแสดงรายการตารางทั้งหมดหรือไม่
มีวิธีที่รวดเร็วในการรับชื่อคอลัมน์ทั้งหมดจากตารางทั้งหมดMySQL
โดยไม่ต้องแสดงรายการตารางทั้งหมดหรือไม่
คำตอบ:
select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
ในการแสดงรายการฟิลด์ทั้งหมดจากตารางใน MySQL:
select *
from information_schema.columns
where table_schema = 'your_DB_name'
and table_name = 'Your_tablename'
เป็นการดีกว่าที่คุณใช้แบบสอบถามต่อไปนี้เพื่อรับชื่อคอลัมน์ทั้งหมดได้อย่างง่ายดาย
Show columns from tablename
SELECT * FROM information_schema.columns
WHERE table_schema = DATABASE()
ORDER BY table_name, ordinal_position
ตั้งแต่ฉันไม่ได้มีตัวแทนพอที่จะแสดงความคิดเห็นนี่คือการปรับปรุงเล็ก ๆ น้อย ๆ (ในมุมมองของฉัน) มากกว่าคำตอบที่ดีกรงขัง Rulez ของ: แทนที่ด้วยWHERE table_schema = 'your_db'
WHERE table_schema = DATABASE()
ในกรณีที่เป็นประโยชน์กับคนอื่น ๆ สิ่งนี้จะให้รายการของคอลัมน์ที่คั่นด้วยจุลภาคในแต่ละตาราง:
SELECT table_name,GROUP_CONCAT(column_name ORDER BY ordinal_position)
FROM information_schema.columns
WHERE table_schema = DATABASE()
GROUP BY table_name
ORDER BY table_name
หมายเหตุ: เมื่อใช้ตารางที่มีคอลัมน์จำนวนมากและ / หรือชื่อฟิลด์ยาวให้ระวังข้อ จำกัดgroup_concat_max_lenซึ่งอาจทำให้ข้อมูลถูกตัดทอน
<?php
$table = 'orders';
$query = "SHOW COLUMNS FROM $table";
if($output = mysql_query($query)):
$columns = array();
while($result = mysql_fetch_assoc($output)):
$columns[] = $result['Field'];
endwhile;
endif;
echo '<pre>';
print_r($columns);
echo '</pre>';
?>
คล้ายกับคำตอบที่ @suganya โพสต์นี้ไม่ได้ตอบคำถามโดยตรง แต่เป็นทางเลือกที่รวดเร็วกว่าสำหรับตารางเดี่ยว:
DESCRIBE column_name;
คำถามคือ:
มีวิธีที่รวดเร็วในการรับชื่อคอลัมน์ทั้งหมดจากตารางทั้งหมดใน MySQL โดยไม่ต้องแสดงรายการตารางทั้งหมดหรือไม่
SQL เพื่อรับข้อมูลทั้งหมดสำหรับแต่ละคอลัมน์
select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
SQL เพื่อรับ COLUMN NAMES ทั้งหมด
select COLUMN_NAME from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
ฉันเขียนสิ่งที่เซ่อนี้มานานแล้วและยังคงใช้จริงตอนนี้แล้ว:
https://gist.github.com/kphretiq/e2f924416a326895233d
โดยทั่วไปจะใช้ "SHOW TABLES" ตามด้วย "DESCRIBE" ในแต่ละตารางจากนั้นแยกออกเป็น markdown
เพียงแก้ไขใต้ "ถ้าชื่อ " และไป คุณจะต้องติดตั้ง pymysql
Piggybacking ตามคำตอบของ Nicola ด้วย php ที่อ่านได้
$a = mysqli_query($conn,"select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position");
$b = mysqli_fetch_all($a,MYSQLI_ASSOC);
$d = array();
foreach($b as $c){
if(!is_array($d[$c['TABLE_NAME']])){
$d[$c['TABLE_NAME']] = array();
}
$d[$c['TABLE_NAME']][] = $c['COLUMN_NAME'];
}
echo "<pre>",print_r($d),"</pre>";