首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite两表匹配逻辑

SQLite两表匹配逻辑
EN

Stack Overflow用户
提问于 2014-02-21 17:29:15
回答 2查看 85关注 0票数 0

在我的SQLite数据库中有两个表,一个是万物表(main),另一个是“收藏”表(favorites),我想为自己的ListView加载一个Cursor,如果它在favorites中,则会有一个恒星变灰或变黄。这两个表都有完全相同的列,我希望用这些列加载一个Cursor,并加载一个额外的列favorite,它可以是布尔值,也可以是1或0。最喜欢的行只是从main表中复制,因此其内容将是相同的。然后,当星号被点击时,更新favorites表并在我的适配器上调用notifyDataSetChanged(),这将更新ListView

我尝试过使用JOIN并使用AS别名加载表,但我遇到了问题。有人能帮我完成SQLite查询吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-24 22:25:40

使用LEFT JOIN,我能够实现我想要的结果,并在favorites表中添加了一个列is_fav

代码语言:javascript
复制
SELECT M.*, F.is_fav
FROM main AS M
LEFT JOIN favorites AS F ON M.title = F.title

添加该列似乎有些奇怪,但它在其他地方使用。

票数 0
EN

Stack Overflow用户

发布于 2014-02-21 17:38:38

您可以使用这样的选择

代码语言:javascript
复制
SELECT M.FieldA, M.FieldB,... M.Fieldx,  
FROM MainTable AS M JOIN Favorites as F 
ON M.Id = F.Id;

在本例中,Id是匹配字段。此外,您还可以用isnull( M.FiledX,‘M.Fieldx’)或任何其他函数替换M.Fieldx。但是,本质上,如果M.Fieldx返回null,那么它就不在收藏夹中。

此外,值得指出的是,在收藏夹表中,您不需要重复行,只需将记录的ID保存在主表中即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21941162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档