タイトルを検索し、別の列を使用して一意性を確認する方法
P粉244155277
P粉244155277 2024-04-02 21:49:55
0
1
486

データベースにスクレイピングした製品データがあり、それを自分の Web サイトで使用したいと考えています。 タイトルが「%EXAMPLE%」のすべてのアイテムを返しますが、一意の製品のみを返すクエリを作成したいと考えています。

問題は、1 つのアイテムに複数の行があり、製品ごとに 1 行だけを返したいことです (毎日スクレイピングしているため、毎日アイテムごとに追加の行を取得します)。行の唯一の違いは、別の日付と価格があることです。それが私が探している価格履歴だからです。

###例: ピンクチョコレート、ピンクアップル、ピンク梨の3アイテムをご用意しました。 3回スクラッチしたので、各項目に3行あります。 例: (この例の目的のために、他のすべての列は追加しませんでした):

###製品番号### ###タイトル### ###価格### ###利用可能### ABC123DEFピンクアップル0.471ABC123DEFピンクアップル0.421ABC123DEFピンクアップル0.411ABC333FHGピンクペア0.411ABC333FHGピンクペア0.411ABC333FHGピンクペア0.411FH5845FJGピンクチョコレート0.411FH5845FJGピンクチョコレート0.411FH5845FJGピンクチョコレート0.411
私が取得したい結果は次のとおりです: ###製品番号### ###タイトル### ###価格### ###利用可能###

ABC123DEF

ピンクアップル0.471ABC333FHGピンクペア0.411FH5845FJGピンクチョコレート0.411 ###何か案は?
正しい結果を得るには、タイトルを検索して重複する productId を除外する必要があるようです。でもどうすればいいのか分かりません。
P粉244155277
P粉244155277

全員に返信(1)
P粉298305266

一例:

リーリー

クエリは、各製品 ID の最高価格行を保存し、その製品の他の行を削​​除します。

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=40df8e8e4b3eb206e0f73b7ce3a70a a5一个>

注 - 保存する必要がある完全な行はすべて一意です (削除する必要がある行には完全な重複が存在する可能性があります)。


リーリー

このクエリでは行が一意である必要はありません。その場合、行のコピーが 1 つだけ返されます。すべてのコピーが必要な場合は、ROW_NUMBER() の代わりに RANK() または DENSE_RANK() を使用します。


MySQL 5.x バージョンのソリューション。

リーリー

このクエリは、存在する場合はすべてのレプリカを返します。コピーが 1 つだけ必要な場合は、DISTINCT を追加します。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート