带有连接和计数器的复杂MySQL cmd不起作用
我正在工作,无法使命令工作。命令如下:带有连接和计数器的复杂MySQL cmd不起作用,mysql,sqlfiddle,Mysql,Sqlfiddle,我正在工作,无法使命令工作。命令如下: SET @n := 1; SET @start := '2013-07-22 10:00:01'; SET @end := '2013-07-22 10:00:02'; SET @register := 40001; SELECT * FROM ( SELECT `realvalues`.`Timestamp`, `realvalues`.`Value` * `register`.`Factor`,
SET @n := 1;
SET @start := '2013-07-22 10:00:01';
SET @end := '2013-07-22 10:00:02';
SET @register := 40001;
SELECT * FROM
(
SELECT
`realvalues`.`Timestamp`,
`realvalues`.`Value` * `register`.`Factor`,
@x := @x + 1 AS rank
FROM
`realvalues`,
(SELECT @x := 0) t
WHERE
`realvalues`.`Register` = register AND
`realvalues`.`Timestamp` BETWEEN start AND end
JOIN
`register`
ON
`register`.`DeviceID` = `realvalues`.`DeviceID` AND
`register`.`Register` = `realvalues`.`Register`
) a
WHERE
rank MOD ? = n
有人知道命令哪里失败了吗?MySQL错误报告不是很有用
[编辑]该值现在与系数一起复制。我看不到@start和@end的用法 编辑:现在它工作了
sqlfiddle.com/#!2/6dc97/50您的查询有很多问题。但是,小提琴中报告的错误是: …检查与您的MySQL服务器版本对应的手册,以了解在“开始和结束连接之间”附近使用的正确语法
register
ON
您在之间的语法不正确。在
之间的之前不应有IS
标记。正确的语法是:
<value> BETWEEN <lower-bound-inclusive> AND <upper-bound-inclusive>
和之间的
其他问题包括:
start
、end
和n
不是列
寄存器(在WHERE
子句中)不明确
- 在
WHERE
子句之后有一个JOIN
子句
- 您没有为派生表
a
的第二列指定别名(可能不需要,但可能会导致问题)
- 在没有指定值的情况下使用
?
参数(尽管这是SQL FIDLE的一个限制,并不一定是SQL语句的问题)
realvalues
Timestamp
介于开始和结束之间@start
与start
不同,我修正了这一点。Thx,但仍有问题(看看新提琴)再次修复了它。但是仍然有一个我无法解决的问题:未知列'realvalues.DeviceID'in'on'子句我认为寄存器
是对的?我想匹配寄存器列,但顺序很重要。你看到我的小提琴了吗?让我们看看