如何获得独特的最新更新数据库?

时间:2017-12-17 08:47:30

标签: mysql laravel

我试图根据唯一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();

有人能建议我正确的答案吗?

2 个答案:

答案 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

干杯, 卡茨珀

相关问题