可能性の重複:
SQL Query to get latest price効率的なSQL方法MySQLデータベースから最新のエントリを選択するには?
私は株価の歴史を含むデータベースを持っています。私は、リストされているすべての株式の最新の価格を選択したいと思います。私はPostreSQLがDISTINCT ONステートメントを持っていることを知っています。
テーブルの列は、name
,closingPrice
およびdate
です。 name
とdate
が一意のインデックスを形成します。
最も簡単(と非常にuneffective)の方法は、私が見つけた
SELECT * FROM stockPrices s
WHERE s.date =
(SELECT MAX(date) FROM stockPrices si WHERE si.name = s.name);
はるかに良い方法は、これを行うための効率的な方法だろう何
SELECT *
FROM stockPrices s JOIN (
SELECT name, MAX(date) AS date
FROM stockPrices si
GROUP BY name
) lastEntry ON s.name = lastEntry.name AND s.date = lastEntry.date;
ですか?どのインデックスを作成すればよいですか?
私は検索に失敗します。 – skolima