我正在开发一个移动应用程序,并使用SQLITE将用于离线使用的数据存储到本地数据库中。 为了使我的本地数据库与远程数据库同步,我正在查询最后10个收藏夹和最后10个匹配项。使用以下查询:
select user_id from users where is_favorite>0 order by is_favorite desc limit 10
union
select user_id from users where is_auto_match>0 order by is_match desc limit 10
请注意,以下查询工作正常,这确认我的本地数据库中没有错误:
select user_id from users where is_favorite>0
union
select user_id from users where is_auto_match>0
答案 0 :(得分:1)
复合查询中不允许使用ORDER BY;允许它的唯一位置是在整个查询的末尾,它会影响所有记录。
为了能够对两个单独的查询使用ORDER BY,您必须使用子查询:
SELECT *
FROM (SELECT user_id
FROM users
WHERE is_favorite > 0
ORDER BY is_favorite DESC
LIMIT 10)
UNION ALL
SELECT *
FROM (SELECT user_id
FROM users
WHERE is_auto_match > 0
ORDER BY is_match DESC
LIMIT 10)
答案 1 :(得分:0)
使用
Select * From(select user_id from users where is_favorite>0 order by is_favorite desc limit 10)
UNION ALL
Select * From(select user_id from users where is_auto_match>0 order by is_match desc limit 10)
注意使用UNION ALL: UNION ALL为重复的user_id提供结果 而UNION从结果中删除重复的user_id