You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite中查询指定记录后3条数据时出现数据缺失问题

解决SQLite查询指定记录后N条数据的问题

咱们先拆解下你当前遇到的问题:你写的查询语句是在筛选winner_1值大于86的记录,但你真正需要的是找到winner_1=86的那条记录(对应draw_date为2015-01-05)之后的所有记录,再按日期排序取前3条——这两个逻辑完全不同,所以结果才会不符合预期。

正确的查询语句

你需要先定位到目标记录的draw_date,再筛选该日期之后的记录,最后排序取前3:

SELECT * 
FROM winners_night 
WHERE draw_date > (SELECT draw_date FROM winners_night WHERE winner_1 = 86)
ORDER BY draw_date 
LIMIT 3;

语句逻辑解释

  1. 子查询(SELECT draw_date FROM winners_night WHERE winner_1 = 86)会精准获取到winner_1=86那条记录的开奖日期(也就是2015-01-05)
  2. 外层查询筛选所有draw_date > '2015-01-05'的记录,这就包含了你期望的2015-01-06、01-07、01-08这几条
  3. 按draw_date升序排序(契合“指定记录之后”的时间顺序),最后用LIMIT 3取前3条,正好匹配你的预期结果

补充说明

你提到row_id存在间隙,所以用draw_date排序是非常正确的选择,它能保证记录按实际开奖日期的先后顺序排列,不会受row_id间隙的影响。


原始问题相关信息

  • 当前使用的错误查询语句:
SELECT * FROM winners_night WHERE winner_1 > 86 ORDER BY draw_date LIMIT 3
  • 错误结果:
draw_date winner_1 winner_2 winner_3
2015-01-06 87 40 95
2015-01-18 95 66 20
2015-01-28 96 25 94
  • 期望结果:
draw_date winner_1 winner_2 winner_3
2015-01-06 87 40 95
2015-01-07 46 72 74
2015-01-08 30 71 94
  • 表结构:
Table [winners_night]
Fields: 9
[row_id]: INTEGER NOT NULL
[year]: CHAR
[month]: CHAR
[date_of_the_month]: CHAR
[day_of_the_week]: CHAR
[draw_date]: DATE
[winner_1]: INTEGER
[winner_2]: INTEGER
[winner_3]: INTEGER
Foreign Keys: 0
Indexes: 2
[sqlite_autoindex_winners_night_1] PRIMARY [draw_date] [row_id]
[row_id]
Triggers: 0
Unique constraints: 0
Check constraints: 0

内容的提问来源于stack exchange,提问作者madcoderz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:03:53