SQL 大于表达式中的多列

SQL multiple columns in greater than expression

看到以下 SQL 与使用游标的分页结果有关,但无法找到有关其部分工作原理的更多信息:

SELECT b.* FROM books b
WHERE (b.name, id) > (select b2.name, b2.id
                      from books b2
                      where b2.id = ?
                      )
ORDER BY b.name;

当您在一个比较表达式中有多个列时会发生什么情况?我还没有找到这方面的任何其他例子。

从左到右进行比较"tuples"。因此,在每个元组中比较第一个值,然后比较下一个值。所以:

  • (1, 2) > (1, 1) --> 真
  • (1, 1) > (1, 1) --> 假
  • (2, 1) > (2, 2) --> 假
  • (2, 1) > (1, 10) --> 真