SQL多个列大于表达式

问题描述 投票:1回答:1

看到以下关于使用游标进行分页结果的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;

在单个比较表达式中有多个列时会发生什么?我还没有找到任何其他的例子。

sql postgresql pagination comparison where
1个回答
2
投票

比较从左到右作为“元组”。因此,在每个元组中比较第一个值,然后比较下一个值。所以:

  • (1, 2) > (1, 1) - >真的
  • (1, 1) > (1, 1) - > false
  • (2, 1) > (2, 2) - > false
  • (2, 1) > (1, 10) - >真的
© www.soinside.com 2019 - 2024. All rights reserved.