0

いくつかの場所 (公園) を、ニュース記事が添付されている順序でリストしようとしているこのクエリがあります。以下はクエリです。

SELECT tpf_news.park_id, date, name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
GROUP BY name ORDER BY date DESC

内部結合は、「park_id」から公園の「名前」を取得するために使用されます。一部の公園には複数のストーリーが関連付けられており、各公園をリストに一度だけ表示したいので、GROUP を使用しました。注文する前にグループ化する必要があるため、クエリは、公園に関連付けられた最新の日付ではなく、最も早い日付を使用していることを意味します。だから順番がおかしい。

このクエリを変更して、各公園が 1 回だけ表示されるようにするにはどうすればよいですか。ただし、最新の日付から最も古い日付の順に正しく並べ替えられます。

ありがとう。

4

2 に答える 2

0

使用するmax(date)

SELECT tpf_news.park_id, max(date), name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
GROUP BY name 
ORDER BY max(date) DESC
于 2013-07-30T22:24:52.753 に答える
0

各公園に関連付けられた最も早い日付を取得する場合は、その列でグループごとの最小値を実行する必要があります。ORDER BY正しい日付があるため、期待どおりに機能します。

あなたのようなクエリを実行するが、select 句の列に集計 (または など)GROUP BYを指定しない場合、MySQL は行の 1 つを選択してその値を使用します。これは予測や制御が難しいため、上記のリンクに示されているように、グループごとの最大値または最小値を使用する必要があります。COUNTMIN

于 2013-07-30T22:29:21.713 に答える