我将300MB表分区并尝试使用此命令从p0
分区进行选择查询
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
如何编写select查询以从特定分区获取数据?
根据你的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'
实际上,自MySQL 5.6以来支持的语法是:
SELECT * FROM table PARTITION (partitionName);
你是对的,5.1.54版本不支持显式选择PARTITION。见this帖子
query
的正确形式如下所示对我来说很好。
select * from employees partition (`p0`);