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

SQLite中获取两张学生表前10高分的SQL语句问题排查

解决SQLite两张表取成绩前10记录的问题

原SQL的问题点

  • 表名带空格(Table 1、Table 2),SQLite中需用双引号包裹,否则会出现识别错误或报错
  • 子查询仅选择了name和SCORES,所以最终结果只能拿到这两列;若需要Gender等其他列,必须在子查询中明确指定
  • 子查询内的ORDER BY无效,UNION ALL会合并两个结果集,最终排序要在外层执行,子查询的排序对最终结果没有影响

修正后的SQL代码

情况1:仅需要姓名和成绩列

sql = ("SELECT name, SCORES FROM ("
       "SELECT name, SCORES FROM \"Table 1\" WHERE SCORES > 0 "
       "UNION ALL "
       "SELECT name, SCORES FROM \"Table 2\" WHERE SCORES > 0"
       ") combined "
       "ORDER BY SCORES DESC LIMIT 10")

情况2:需要所有列(姓名、性别、成绩)

sql = ("SELECT * FROM ("
       "SELECT name, Gender, SCORES FROM \"Table 1\" WHERE SCORES > 0 "
       "UNION ALL "
       "SELECT name, Gender, SCORES FROM \"Table 2\" WHERE SCORES > 0"
       ") combined "
       "ORDER BY SCORES DESC LIMIT 10")

样本数据验证

用你提供的样本数据执行第二种SQL,会得到如下结果:

nameGenderSCORES
JudyFemale4500
CindyFemale3500
RobertMale1600
SteveMale1200

完全符合按成绩降序取前N条的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:57:08