mysql - 如何获取重复数据的最后一条记录?
问题描述
我有 table A ( id - message - user_id )
,我需要说明 table 中是否有任何user_id
重复的只是带上用户添加的最后一个:
我的控制器代码(我的错误关闭):
$duplicate = VerfiyRequest::where('user_id', '>' , 1)->first();
$VerfiyRequests = VerfiyRequest::latest()->get();
return view('backend.VerfiyRequest.index' , compact('VerfiyRequests'));
解决方案
使用它通过最新的 id(递增的主键)获取每个用户的最后一条记录:
VerfiyRequest::whereIn('id', function ($query) {
$query
->from('verify_requests')
->select(DB::raw('MAX(id) as id'))
->groupBy('user_id');
})->get();
说明:MAX(id) as id
选择id
每个用户组的最新记录,因此内部查询返回每个用户的最新记录。
推荐阅读
- ios - 无法本地化不匹配人脸的人脸 ID 弹出窗口
- shopify - 在 Shopify 中堆叠折扣代码
- algorithm - 在最小堆中找到第 7 个最小的元素
- numpy - Tensorflow 矩阵乘法比 numpy 慢
- php - Mysql从2个表中的2列完全搜索
- reinforced-typings - 如何在不创建无效导入的情况下引用外部库类型
- python-3.x - 如何使用 python 脚本将用户在我的网站上上传的文件存储到 azure 上?
- r - 如何在 R 中使用 smotefamily 处理分类变量?
- javascript - CryptoJS 说 Crytpo.js 文件未找到错误
- oracle-sqldeveloper - sqldeveloper 加载数据库内容的时间太长