sqlite - 使用 order 和 where 子句在表中查找偏移量
问题描述
考虑以下模式和表:
CREATE TABLE IF NOT EXISTS `names` (
`id` INTEGER,
`name` TEXT,
PRIMARY KEY(`id`)
);
INSERT INTO `names` VALUES (1,'zulu');
INSERT INTO `names` VALUES (2,'bene');
INSERT INTO `names` VALUES (3,'flip');
INSERT INTO `names` VALUES (4,'rossB');
INSERT INTO `names` VALUES (5,'albert');
INSERT INTO `names` VALUES (6,'zuse');
INSERT INTO `names` VALUES (7,'rossA');
INSERT INTO `names` VALUES (8,'juss');
我使用以下查询访问此表:
SELECT *
FROM names
ORDER BY name
LIMIT 10
OFFSET 4;
使用偏移量 4 是因为它是第一次出现 'R%' 名称的 rowid(在有序列表中)。这将返回:
1="7" "rossA"
2="4" "rossB"
3="1" "zulu"
4="6" "zuse"
我的问题是,是否有一个 SQL 语句可以返回 OFFSET 值(在其 4 以上的 R 情况下)给定一个起始的第一个字母?(我真的不想通过结果使用 stepping() 来计算行数,直到达到第一个 'R%'!)
我尝试了以下但没有成功:
SELECT MIN(ROWID)
FROM
(
SELECT *
FROM names
ORDER BY name
)
WHERE name LIKE 'R%'
它总是返回单行 NULL 数据。
作为背景,这个表是一个电话簿列表,我想将结果的子集(来自主表)提供给调用者,从初始字母偏移量开始。
解决方案
只需计算感兴趣的字符串之前的行数:
select count(*) from names where name < 'r';
推荐阅读
- delphi - FMX FormVirtualKeyboardShown 显示 Kboard 的边界不正确
- django - 将值从 django 视图传递到同一模板
- java - Spring Batch:对枚举进行分块并将其传递给阅读器
- python - 无法使用python解析网页
- wpf - WPF 路径周围不需要的边距
- python - python中的函数/循环从列表中查找数字
- c# - 使用消耗品时增加生命值
- google-sheets - Google 表格、查找和 SUM 全部匹配
- php - 链接在 PHP 中无法正常工作或显示
- angularjs - 从 umbraco 中的多值数据类型中检索数据