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

SQLite使用UNION获取表首尾记录失效,是否支持UNION操作?

SQLite 完全支持 UNION 操作,你当前语句未返回预期结果,是UNION特性和版本兼容细节导致的,可按以下方案调整:

你原本的写法本身语法没有错误,首先可以尝试将UNION替换为UNION ALL:

(select * from location order by id ASC LIMIT 1)
UNION ALL
(select * from location order by id DESC LIMIT 1);

问题原因

  • UNION 会自动对结果集进行去重,如果首尾两行的所有字段值完全一致(概率较低但存在可能性),会被合并为一行返回,同时UNION的执行效率也低于无需去重的UNION ALL。
  • 部分旧版本 SQLite 对带ORDER BY的子查询合并逻辑兼容不佳,可能导致子查询内的排序未生效。

兼容优化写法

如果替换后仍有问题,可以使用嵌套子查询的写法,兼容性更高,还可以自定义返回结果的排序:

SELECT * FROM (
    SELECT *, 1 AS sort_tag FROM location ORDER BY id ASC LIMIT 1
    UNION ALL
    SELECT *, 2 AS sort_tag FROM location ORDER BY id DESC LIMIT 1
) AS temp ORDER BY sort_tag;

这个写法会固定返回的第一行为id最小的记录,第二行为id最大的记录,即使后续表数据量增长也能稳定运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:39:01