2013-01-01 105 views
8

tôi đã thực hiện phân vùng bảng 300MB của tôi và cố gắng để làm chọn truy vấn từ p0 phân vùng bằng lệnh nàyLàm thế nào để chọn các hàng từ phân vùng trong MySQL

SELECT * FROM employees PARTITION (p0); 

Nhưng tôi nhận được lỗi sau

ERROR 1064 (42000): You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near '(p0)' at line 1 

thế nào thế nào để viết truy vấn chọn để lấy dữ liệu từ phân vùng cụ thể?

+1

Kiểm tra bài đăng này: http://dba.stackexchange.com/questions/23138/unable -to-select-the-records-từ-cụ thể-phân vùng-trong-mysql. Nó không được hỗ trợ. – bonCodigo

+1

Tại sao bạn cần cấu trúc đó? Bạn không thể chỉ cần thêm mệnh đề WHERE mà truy cập p0? –

Trả lời

10

Tùy thuộc vào bạn Phiên bản MySql, PARTITION từ khóa không tồn tại cho đến MySQL 5.6.2. Bạn sẽ sử dụng MySQL 5.5 hoặc thậm chí 5.1, nhưng không phải là 5.6. Trong trường hợp, bạn đang sử dụng MySQL 5.1, sau đó bạn có thể làm một số cách giải quyết như dưới đây

SELECT partition, count(ID) 
FROM 
(
    SELECT ID, 
     case when condition then p1 
      when condition then p2 
     ..... 
     end as partition 

    FROM 
     table 
) s1 
GROUP BY partition 

Lưu ý: Các giải pháp trên chỉ là workaround để giúp bạn có mong muốn đầu ra.

Bạn cũng có thể thử truy vấn này để đếm tổng số hàng cho phân vùng của mình.

SELECT table_rows as 'count(*)' FROM information_schema.partitions WHERE table_schema = schema() and table_name ='employees' and partition_name = 'p0'; 

Lưu ý: bạn có thể thay đổi table_schema = schema()-table_schema = 'yourschema'

+0

Cảm ơn bạn, nó hoạt động – Kad

+0

Tôi sẽ, chờ đợi tối thiểu chấp nhận thời gian vượt qua. – Kad

+0

ok không có vấn đề, chỉ cần đừng quên chấp nhận, khác sẽ nhận được lợi ích – Ravi

2

Bạn nói đúng, lựa chọn rõ ràng PARTITION không được hỗ trợ trong phiên bản 5.1.54. Xem this đăng

1

Không chắc chắn tại sao câu trả lời của tôi đã được chuyển đổi thành một bình luận;)

Đưa nó trở lại. Kiểm tra số question on DBA này. Nó không được hỗ trợ trong phiên bản hiện tại của MYSQL.

Bạn cũng có thể kiểm tra MYSQL dev article

+1

bởi vì, bạn đã đăng câu trả lời ngắn. – Ravi

+0

Infact asnwer đã được đăng trước khi tôi hoàn thành nó;) cảm ơn anyway. – bonCodigo

6

Trên thực tế kể từ MySQL 5,6 cú pháp được hỗ trợ là:

SELECT * FROM table PARTITION (partitionName);