sql查询比较值

时间:2015-04-22 19:16:29

标签: mysql sql database

这是我在准备面试时发现的一个SQL问题。

如何有效地查找价值大于前一个记录的所有记录?

ID      1   2   3    4   5   

value   6   5   10   8   30

2 个答案:

答案 0 :(得分:2)

您可以使用自联接。只要问题肯定只是将当前记录与之前的记录(而不是之前的所有记录)进行比较。

SELECT
    t1.*
FROM
    table t1
    INNER JOIN table t2
        ON t1.id = t2.id + 1
WHERE   
    t1.value > t2.value

答案 1 :(得分:0)

如果ID是连续的,没有间隙,JNevill的答案是有效的。如果可能缺少ID,这可能会更好:

SELECT t1.*
FROM (
    SELECT t.*, value > @prevValue AS greater, @prevValue := value
    FROM (SELECT *
          FROM YourTable
          ORDER BY id) AS t
    CROSS JOIN (SELECT @prevValue := null) AS init) AS t1
WHERE greater = 1

DEMO