2010-03-30 30 views
11

Tôi cần phải tìm các cột trong một bảng cụ thể, mà là không có vấn đề:Return lệnh của MySQL hiển thị các cột

SHOW COLUMNS FROM tablename LIKE '%ColumnPrefix%'; 

Nhưng tôi cần phải biết những gì để họ sẽ được trả lại, tốt nhất là bằng cách chọn lệnh kết quả tăng dần theo thứ tự abc. Tôi không có may mắn khi sử dụng ORDER BY.

Bất kỳ ý tưởng nào?

+0

Tại sao bạn cần những điều bất thường như vậy từ một hộp đen như một cấu trúc bảng? –

+0

Bạn đang sử dụng phiên bản MySQL nào? Bạn đang sử dụng ứng dụng nào, ví dụ: PHP? Tại sao không chỉ sắp xếp các cột trên máy khách? –

+0

MySQL 4.0.16 là một chút đau đớn, sẽ có một trò chơi về việc đặt hàng nó với PHP. Não không có trong bánh răng ngày nay có vẻ như (!) – rich

Trả lời

13

Bạn có thể truy vấn bảng INFORMATION_SCHEMA.COLUMNS để có được các thông tin mà SHOW COLUMNS mang đến cho bạn, cộng với nó cho phép bạn sử dụng ORDER BY hoặc bất kỳ cú pháp SQL khác mà bạn có thể muốn sử dụng:

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'tablename' 
    AND column_name LIKE 'ColumnPrefix%' 
ORDER BY column_name 
+1

+1 Điểm tốt - cơ sở dữ liệu INFORMATION_SCHEMA (kể từ 5.0) có lẽ là điều hữu ích nhất bị bỏ qua trong MySQL. – Piskvor

+0

Đang chạy phiên bản 4.0.16 nếu không thì đó sẽ là một cách tuyệt vời để thực hiện công việc. – rich

6

Kể từ khi tôi đã có chính xác cùng một vấn đề tôi sẽ hoàn thành câu trả lời của Mark. Dưới đây là phiên bản chính xác dài của 'cột chương trình từ bảng' truy vấn:

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`='mytable'; 

Với truy vấn này bạn có thể đặt kết quả tuy nhiên bạn muốn bằng cách thêm ORDER BY.

Các vấn đề liên quan