2010-09-24 39 views
20

Có thể truy vấn cơ sở dữ liệu MySQL để lấy tên cột của bảng theo thứ tự bảng chữ cái không? Tôi biết rằngmysql lấy tên cột bảng theo thứ tự bảng chữ cái

SHOW COLUMNS `table_name`; 

hoặc

DESCRIBE `table_name`; 

sẽ cho tôi một danh sách các cột trong một bảng (cùng với thông tin khác), nhưng là nó có thể thay đổi các truy vấn để có được các cột được sắp xếp theo thứ tự bảng chữ cái. Thêm ORDER BY 'Field' không hoạt động, nó đưa ra một lỗi cú pháp.

Trả lời

26

Các ANSI INFORMATION_SCHEMA tables (in this case, INFORMATION_SCHEMA.COLUMNS) cung cấp linh hoạt hơn trong MySQL:

SELECT c.column_name 
    FROM INFORMATION_SCHEMA.COLUMNS c 
WHERE c.table_name = 'tbl_name' 
-- AND c.table_schema = 'db_name'  
ORDER BY c.column_name 
+0

Làm việc tuyệt vời, sẽ sử dụng lại. Bạn có thể cho tôi biết lý do tại sao các điều kiện c.table_schema là có mặc dù bởi vì nó dường như làm việc mà không có nó. –

+0

@ John Scipione: Dấu gạch ngang kép "-" là một chú thích trong SQL; table_schema được nhận xét từ truy vấn. Loại bỏ dấu gạch ngang kép để nó được đánh giá trong câu lệnh. –

3

Mỗi lĩnh vực được liệt kê hai lần cho đến khi tôi sử dụng group by column name

select c.COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS c 
where c.TABLE_NAME = `'tbl_name'` 
group by c.column_name 
order by c.column_name 
2

Nếu bạn muốn biết thêm chi tiết, dưới đây truy vấn thực sự tiện dụng:

SELECT COLUMN_NAME as 'Field', 
    COLUMN_TYPE as 'Type', 
    IS_NULLABLE as 'Null', 
    COLUMN_KEY  as 'Key', 
    COLUMN_DEFAULT as 'Default', 
    EXTRA   as 'Extra' 
    from INFORMATION_SCHEMA.COLUMNS 
    where TABLE_NAME = 'my table' and 
    TABLE_SCHEMA = 'my database' 
    add ordering 
    order by Type; -- 
Các vấn đề liên quan