2017-12-17 20 views
-3

私はユニークな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

私は最新の値ではない古い値を持っています – User57

+0

最初に注文してください。次にgroupByを使用して何が起こるか教えてください。 –

答えて

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); 
0

私はそれのようであるべきだと思う:あなたは本当に(1,2,3)にIDを変更したい場合は

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) 

と、あなたは新しいテーブルのようにいつもこのデータをどこかにエクスポートすることができます。つまり、更新機能を実行します。

すなわち

UPDATE Your Table Here 
SET id = 1 
WHERE [unique_id]=1123 

など

乾杯、 カツペル

関連する問題