2013-08-05 83 views
1

工作分區表我已經在我的數據庫分區表如下:選擇查詢不能在MySQL中

的mysql>顯示創建表drugs_info \ G;

Table: drugs_info 
Create Table: CREATE TABLE `drugs_info` (
    `did` int(11) NOT NULL AUTO_INCREMENT, 
    `brand_name` varchar(150) DEFAULT NULL, 
    `generic` varchar(500) DEFAULT NULL, 
    `tradename` varchar(150) DEFAULT NULL, 
    `manfactured` varchar(100) DEFAULT NULL, 
    `unit` varchar(300) DEFAULT NULL, 
    `type` varchar(50) DEFAULT NULL, 
    `quantity` varchar(50) DEFAULT NULL, 
    `price` float DEFAULT NULL, 
    PRIMARY KEY (`did`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (did) (PARTITION p0 VALUES LE 
SS THAN (1000) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (2000) ENGINE = InnoDB, PARTITION 
p2 VALUES LESS THAN MAXVALUE ENGINE = InnoD 

我寫了一個選擇查詢'partition po'它會顯示錯誤的結果如下:

mysql> select count(*) from drugs_info p0; 

count(*) 
---------- 
64378 

我除外以下結果上面的選擇查詢:

count(*) 
--------- 
1000 
+0

'from drugs_info p0'只爲'drugs_info'定義了一個別名'p0' –

+0

p0是我在我的drugs_info中的第一個分區名稱。 – user2609600

+0

我明白這一點。但是按照你使用它的方式,'p0'不過是一個別名。 –

回答

1

語法:

SELECT count(*) FROM drugs_info PARTITION (p0) ; 

另外,使用分區時要小心。有時它們具有邏輯意義,就像按月分區的銷售表一樣。就你而言,它看起來很隨意。你可以決定從現在起六個月完全重新設計你的分區,你也必須改變你的代碼。

+0

但它顯示錯誤1064(42000):您的SQL語法中有錯誤;檢查我們的MySQL服務器版本y 對應的手冊,在第1行'(p0)'附近使用正確的語法 – user2609600

+0

您確定您的mysql服務器支持分區嗎?如果我使用'%partition%'等顯示變量,請參見[Chapter 18. Partitioning](https://dev.mysql.com/doc/refman/5.6/en/partitioning.html) – Nicolas

+0

; + ------------------- + ------- + |變量名|值| + ------------------- + ------- + | have_partitioning |是| – user2609600