質問があります:MySQLの特定の行のセットから最新の日付を取得します。MySQLの行選択の日付
たとえば、ID、クライアントID、および購入日を持つPurchasingテーブルがあるとします。
私はクライアントID = 1に基づいた選択をした場合、私はあなたが後にしている何のid = 2
質問があります:MySQLの特定の行のセットから最新の日付を取得します。MySQLの行選択の日付
たとえば、ID、クライアントID、および購入日を持つPurchasingテーブルがあるとします。
私はクライアントID = 1に基づいた選択をした場合、私はあなたが後にしている何のid = 2
の購入をこれはキャプチャする必要がありますか?その後、
またSELECT Id, `client id`, MAX(`date of purchase`)
FROM your_db
GROUP BY `client id`
あなただけの1行を返すようにしたい場合は
SELECT Id, `client id`, MAX(`date of purchase`)
FROM your_db
WHERE `client id` = 1
Id列は集計ではありません。このクエリは、他のデータベースやstrictモードで動作しているMySQLで実行されることはありません。 –
そうです。実際、プロシージャを介してクライアントIDを選択できるようにしたかったのです。つまり、私の「GROUP BY client_id」は「どこのclient_id = id」になりますか?しかし、これは私に多くの答えを手伝った!タンク –
@TimBiegeleisenはこの例では正しいですが、実際にはそこに存在する必要はありません。厳密なmysqlの場合、Timの答えがうまくいくでしょう。異なるデータベースの場合、DBに依存する質問は、猫をスキンケアする多くの方法があるためです – Tik
SELECT id, client_id, DATE_OF_PURCHASE
FROM purchasing
GROUP BY DATE_OF_PURCHASE
HAVING MAX(DATE_OF_PURCHASE)
は、コードの上お試しください。
希望すると、これが役立ちます。
あなたが行全体をしたい場合、あなたはいくつかの方法でこれを行うことができますが、むしろ「集約」よりも「フィルタリング」を考える:もちろん
select t.*
from t
where (client_id, date_of_purchase) in (select client_id, max(date_of_purchase)
from t
group by client_id
);
を、同様のロジックを表現する多くの方法があります。 。 。相関照会を使用してexists
またはjoin
の相関サブクエリを使用して=
を使用します。
これを実行する1つの方法は、各クライアントの最新の購入日を検出するサブクエリに参加することです。
SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT client_id, MAX(purchase_date) AS max_purchase_date
FROM yourTable
GROUP BY client_id
) t2
ON t1.client_id = t2.client_id AND
t1.purchase_date = t2.max_purchase_date
-- WHERE client_id = 1
更新あなたは....疑問と期待される結果を追加したデータではない言葉 – scaisEdge
SELECT ID、 'クライアントid'、MAX(' purchase'日) としてテーブルFROM 'クライアントid' = 1 GROUP BY 'クライアントID'; – JYoThI