我有一个非常简单的MySQL表,其中包含时间 - 值对。
我需要从上周(或任何时期)和一个额外记录中获取项目,因为我想从数据中绘制图表并需要知道1周时间之前的最后一个值,所以图表不会为空。 (项目非常罕见,每天1-2条记录)
我试过这样的东西,但似乎这是完全错误的语法:
SELECT * from mytable ORDER BY Time desc
LIMIT (SELECT count(*) from mytable WHERE Time > NOW() - INTERVAL 1 WEEK)+1;
表格结构:
CREATE TABLE mytable (
Time datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
Value double DEFAULT NULL, PRIMARY KEY (Time) );
答案 0 :(得分:0)
LIMIT子句可用于约束SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量,但有以下例外:
在预准备语句中,可以使用?指定LIMIT参数?占位符标记。
在存储的程序中,可以使用整数值例程参数或局部变量指定LIMIT参数。
你可以做的是选择所需间隔的行,并将它们与第一个在
之外的行联合起来SELECT *
FROM mytable
WHERE Time > NOW() - INTERVAL 1 WEEK
UNION ALL
SELECT *
FROM mytable
WHERE Time <= NOW() - INTERVAL 1 WEEK
ORDER BY Time desc
LIMIT 1