【问题标题】:SQLite sub query with LIMIT not work in 2.3 device带有 LIMIT 的 SQLite 子查询在 2.3 设备中不起作用
【发布时间】:2014-03-28 07:34:03
【问题描述】:

此查询在 4.0 中完美运行,但在 2.3 设备中不适用,如果我删除 LIMIT 子句和子查询,则在 2.3 设备中完美运行

2.3 设备中的 LIMIT 有什么问题???

在 4 种不同的设备上测试相同的 APK 2.3 只显示一个结果并非全部,4.0 完美运行

这是我的fiddle

SELECT * FROM (SELECT pk_video_master_id AS _id,    
video_title AS title1,
COUNT(fk_video_master_id) AS sub_title_1,   
SUM(video_detail_length) AS sub_title_2,
-1007 AS module 
FROM tbl_video_master 
LEFT JOIN tbl_video_detail ON fk_video_master_id = pk_video_master_id
WHERE title1 LIKE '%n%' GROUP BY _id LIMIT 3) 

UNION ALL 

SELECT * FROM (SELECT pk_surveys_id AS _id ,
surveys_title AS title1,
surveys_end_date AS sub_title_1,
COUNT(fk_survey_detail_survey_id) AS sub_title_2,
-1006 AS module
FROM tbl_surveys 
LEFT JOIN tbl_survey_detail ON fk_survey_detail_survey_id = pk_surveys_id 
WHERE title1 LIKE '%n%' GROUP BY _id LIMIT 5);

帮帮我……谢谢

【问题讨论】:

  • 2.3 设备出了什么问题?
  • 问题是2.3设备有什么问题?奇怪,但事实上我已经通过使用 LIMIT 删除子查询进行了两次测试,它的工作完美
  • 什么没有按预期工作?错误是什么?
  • 是的,如果您在该结果模块列中看到小提琴有 2 个模块 -1007 和 -1006,因此在 2.3 中它只显示 -1006 结果而不是 -1007 和 4.0 显示所有结果没有错误但导致查询未显示在 2.3 设备中
  • 旧的 Android 版本可能使用旧的 SQLite 版本。在这里查看:stackoverflow.com/questions/2421189/…

标签: android database sqlite android-4.0-ice-cream-sandwich android-sdk-2.3


【解决方案1】:

你可以试试 ROWID BETWEEN 1 AND 5 而不是 LIMIT

您可以选择-1006,然后您也可以选择-1007。因此,您可以通过 java 而不是 sql 强制执行 LIMIT。我的意思是不要使用 union 分别选择两个记录作为两个结果集,然后 java make union results set as you want

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 2017-05-09
    相关资源
    最近更新 更多