数据库有多个用户的记录 我只要一个用户只显示当前用户最新的记录SQL如何写??
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库有多个用户的记录 我只要一个用户只显示当前用户最新的记录SQL如何写??相关的知识,希望对你有一定的参考价值。
参考技术A select * from table t where not exists (select 1 from table t1 where t1.id=t.id and t1.datetime<t.datetime)..这种方法可以连ID字段也选出来,但是需要全扫描. 参考技术B select username,max(datime) from tablename group by username;本回答被提问者采纳 参考技术C select top 1 * from tablename ORDER BY dating Desc WHERE UserName='姓名'
如何根据当前用户 ID 查询 Realm 数据库?
【中文标题】如何根据当前用户 ID 查询 Realm 数据库?【英文标题】:How do I query Realm database based on current user ID? 【发布时间】:2015-12-21 13:27:07 【问题描述】:我有一个 Realm 数据库,它保存具有不同用户 ID 的不同用户的记录。
我还有一个 UITableViewController 可以显示 Realm 查询的结果。我希望查询只返回当前用户的段落。
class PassageListController: UITableViewController
var currentUserID: Int = NSUserDefaults.standardUserDefaults().objectForKey("currentUserID") as! Int
lazy var dataArray: Results<Passage> = return try! Realm().objects(Passage).filter("userID == \(currentUserID)")
问题是我收到以下错误消息:
实例成员“currentUserID”不能用于类型“PassageListController”
尽管尝试延迟加载 Realm 查询。解决这个问题的最佳实践方法是什么?
期待一些解决方案:
-
我无法在 viewDidAppear() 中加载查询,因为无法定义空的 Realm Result 并且它需要在整个控制器中都可以访问。
我可以将 currentUserID 设置为全局变量,但这违反了我的原则。
【问题讨论】:
【参考方案1】:在到达 Realm 查询之前,它似乎在计算 currentUserID
的计算值时遇到了一些问题。
Looking around on SO,看来这种问题可以通过将currentUserID
的定义更改为只读访问器来解决:
var currentUserId: Int
get
return NSUserDefaults.standardUserDefaults().objectForKey("currentUserID") as! Int
希望对你有所帮助!
【讨论】:
【参考方案2】:TiM 的回答让我找到了正确的方法:
class PassageListController: UITableViewController
var currentUserID: Int = NSUserDefaults.standardUserDefaults().objectForKey("currentUserID") as! Int
var dataArray: Results<Passage>
get
return try! Realm().objects(Passage).filter("userID == \(currentUserID)")
项目现在构建,但我不确定这是否是使用 Realm 的最佳方法,因为
现在查询可能会在每次访问 dataArray 时运行,并且 我不确定 Realm 的通知是否会起作用。【讨论】:
很高兴能帮上忙!嗯,是的。如果您将该数组插入表格视图,这似乎是一种非常低效的方法。如果 viewDidAppear 为时已晚,我想知道是否值得在转换到此视图控制器之前执行此查询,并在实例化时简单地将结果传递给它。以上是关于数据库有多个用户的记录 我只要一个用户只显示当前用户最新的记录SQL如何写??的主要内容,如果未能解决你的问题,请参考以下文章