我有一个messages
表,我想获取已删除的消息。它们由不为空的时间戳确定,我希望它们从用户指定的id
开始。首先,我认为这只是一个简单的查询(我以48为例):
select id from messages where deleted_at <> "NULL" and id > 48 order by deleted_at;
不久,我注意到这不会返回预期的结果。这是我数据集的一些结果:
#没有ID> 48 46,54,53,52,51,51,49,48,61,63,62 #与ID> 48 49,50,51,52,53,54,61,62,63 #所以我只想从指定值中切下结果, 46,54,53,52,51,50,49,48 v 61,63,62 %*SNIP* # 预期结果 61,63,62
(我添加了剪刀以说明问题)
如何构建查询?我也为仅限Laravel的解决方案开放,但是仅仅获得SQL的方式就很好。我知道可以通过Laravel侧PHP脚本来完成限制,但是当这些数据每秒使用一次时,它的成本很大。
null不是字符串
select id from messages where deleted_at is not null and id > 48 order by deleted_at;
laravel,您可以使用 WhereNotNull
,例如:
$messages = DB::table('messages')
->whereNotNull('deleted_at')
->orderBy('deleted_at', 'desc')
->get();