如果是一个重复的问题,请原谅。我试着在这里和谷歌搜索,但我无法找到我想要的东西。
我有两张桌子A& B.
表A字段:id,名称,描述,评级
表B字段:id,aId(链接到表A),customerId,推荐。
表A包含我的数据项,我存储了用户提供的平均累积评分。 表B存储表A数据的另一个属性。它存储推荐位(推荐值为1,非推荐值为0)。
我想列出表A中的所有数据,但我想使用表B中的推荐位对它们进行排序。因此,如果表A中有10条记录,表B中有2条记录,则列出所有这10条记录,表B中的两个应首先出现,然后是表A中的其他两个。建议的比特值是0还是1并不重要。在列出表A中的其他8个记录时,我想列出基于评级的降序记录。
有人可以指导我为Android应用编写这个sqlite查询吗?提前谢谢!
答案 0 :(得分:2)
左连接会将recommended
字段添加到结果集中(如果没有匹配的NULL
记录,则值为B
)。
表达式recommended IS NULL
或EXISTS(...)
返回0或1:
SELECT DISTINCT A.*
FROM A LEFT JOIN B ON A.id = B.aId
ORDER BY B.recommended IS NULL,
A.rating DESC
可替换地:
SELECT *
FROM A
ORDER BY NOT EXISTS (SELECT 1
FROM B
WHERE B.aId = A.id),
rating DESC