2013-01-01 14 views
8

選擇分區行我做了分割我的300MB表,並努力使選擇查詢從p0分區使用此命令如何在MySQL

SELECT * FROM employees PARTITION (p0); 

但我得到以下錯誤

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 

如何編寫選擇查詢以從特定分區獲取數據?

+1

檢查這個帖子:http://dba.stackexchange.com/questions/23138/unable -to-選擇最紀錄 - 從特定的分區,在MySQL的。 不支持。 – bonCodigo

+1

你爲什麼需要這個構造?你不能簡單地添加一個命中p0的WHERE子句嗎? –

回答

10

根據您的MySql版本,PARTITION關鍵字不存在,直到MySQL 5.6.2。你會使用MySQL 5.5甚至5.1,但不是5.6。如果,你正在使用MySQL 5.1,那麼你可以做一些變通辦法像下面

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 

注:以上解決方案只是解決方法,以得到你想要的輸出。

您也可以嘗試使用此查詢來計算分區的總行數。

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

注:你可能會改變table_schema = schema()table_schema = 'yourschema'

+0

謝謝你,它的工作 – Kad

+0

我會的,等待最短的接受時間通過。 – Kad

+0

確定沒有問題,只是不要忘記接受,其他將獲得好處 – Ravi

2

你說得對,明確選擇PARTITION在5.1.54版本中不受支持。請參閱this

1

不知道爲什麼,我的答案被轉換成一個評論;)

裝回去。檢查這個question on DBA。它在當前版本的MYSQL中不受支持。

您還可以檢查出MYSQL開發article

+1

因爲,你會發布簡短的答案。 – Ravi

+0

事實上,在我完成它之前,我已經發布了;)無論如何,謝謝。 – bonCodigo

6

其實從MySQL 5.6支持的語法是:

SELECT * FROM table PARTITION (partitionName);