我试图根据唯一ID来检索我想要获取数据的位置,但是最新的。
即,
id customer_name uniqueId
1 x 1123
2 y 1123
3 z 1124
4 m 1125
5 n 1125
查询后的预期输出:
id customer_name uniqueId
1 y 1123
2 z 1124
3 n 1125
我使用了以下陈述但未能得到预期答案:
$customers = DB::table('customers')
->select('uniqueId','customer_name','id','created_at')
->orderBy('created_at','desc')
->groupBy('uniqueId')
->get();
有人能建议我正确的答案吗?
答案 0 :(得分:0)
我解决了你的问题。这将是一些复杂的查询。但它解决了你的问题。这是原始查询。我通过laravel查询构建器运行原始查询。如果您获得更简单的查询,请告诉我们。
$sql = "
SELECT p.`id`,p.`customer_name`,p.`uniqueId`
FROM
(
SELECT MAX(created_at) AS created_at
FROM `customers`
GROUP BY `uniqueId`
) t
LEFT JOIN `customers` p ON t.created_at = p.`created_at`
"
$customers = DB::select($sql);
答案 1 :(得分:0)
我认为应该是这样的:
SELECT [id],[customer_name],[uniqueId]
FROM [Table name]
WHERE [id]= 2 OR ID = 3 OR ID = 5
或使用IN子句
where id in (id1,id2.........long list)
如果你真的想将id更改为(1,2,3),你总是可以将这些数据导出到其他地方,比如新表,即执行更新功能。
即。
UPDATE Your Table Here
SET id = 1
WHERE [unique_id]=1123
等
干杯, 卡茨珀