要将一行与前一行进行比较,我JOIN
将一个表与前一行id
(主键)进行比较:
CREATE TABLE `tablename` (
id INT(5) PRIMARY KEY AUTO_INCREMENT,
data INT
);
SELECT t1.id, t1.data, t1.data-(SELECT data FROM tablename WHERE id=t1.id-1) AS diff
FROM tablename t1 LEFT JOIN tablename t2 ON t1.id = t2.id
ORDER BY diff DESC LIMIT 1;
如何将其限制为仅数据的特定子集?例如,如果将一列user VARCHAR(32)
添加到表中,我如何将查询限制为仅区分特定用户?向两个查询添加一个简单的 WHERE 子句SELECT
将不起作用,因为整个前提取决于序列id
s。我想我可以将数据移动到一个临时表中,但如果有一个更清洁、更有效的解决方案,那么我会使用它。
我的意图是添加一个WHERE user='someUser'
子句,该子句的差异将仅针对特定用户,而不是整个表。
这是一个工作sqlfiddle。我想修改此查询,使其仅适用于WHERE name='a'
,结果将是id=9, data=305, diff=125
。