2016-05-24 3 views
0

私のシステムの各ページには複数のpage_objectsがあります。 ページごとに私のpage_objectsのlast_changedレコードを返す必要があります。SELECT ... INで作業していないため、グループでmax(date)をクエリしていますか?

は、ページごとに、それぞれ最後に編集page_objectを返すために、クエリで...私はSELECTを持って、DB-影響を小さくするには:これは動作しませんもちろん

SELECT object, f_page_id, page_object_id, last_change 
FROM page_objects 
WHERE f_page_id IN (page_id1, page_id2, page_id3, etc...) GROUP BY f_page_id 
ORDER BY last_change ASC; 

GROUP BYORDER BY前に適用されているので、

SELECT object, f_page_id, page_object_id, max(UNIX_TIMESTAMP(last_change)) 
FROM page_objects 
WHERE f_page_id IN (page_id1, page_id2, page_id3, etc...) GROUP BY f_page_id 

しかし、これはまだpage_idのあたり最後に編集したpage_objectを返しませんので、私は、クエリを変更しました。

私は間違っていますか?

+0

サブクエリを使用してみます。グループの最大値と最小値を選択してもグループ内の最初のf_page_idが返されます。 – Faraz

答えて

2

最新のlast_changeのレコードを取得するためのクエリが指定されていません。単にlast_changeの最新の値を取得するだけです。 GROUP BY句に記載されていない他の非集計値(つまり、集計関数の結果ではなく、MAXやMINなど)は、グループ化された値の任意の行から取得できます。

SELECT page_objects.object, 
     page_objects.f_page_id, 
     page_objects.page_object_id, 
     page_objects.last_change 
FROM page_objects 
INNER JOIN 
(
    SELECT f_page_id, MAX(last_change) AS latest_last_change 
    FROM page_objects 
    GROUP BY f_page_id 
) sub0 
ON page_objects.f_page_id = sub0.f_page_id 
AND page_objects.last_change = sub0.latest_last_change 
WHERE page_objects.f_page_id IN (page_id1, page_id2, page_id3, etc...) 
ORDER BY last_change DESC 

- :あなたは、各ページの最新の値を取得するには、サブクエリを使用して、一致する行にこのような

何かを得るためにあなたのメインテーブルに対してそれをバックに参加このよう

MySQLは、非常に特殊な状況を除いて、SQL標準に反してGROUP BY句で言及されていない非集計カラムを持つことを可能にすることでは非常に珍しいことに注意してください。これを試してみると、ほとんどのSQLのフレーバーはエラーを出すでしょうし、MySQLも同様のクエリーを拒否させるような設定パラメーターを持っています。

+0

あなたの例を試しましたが、結果はゼロです。あなたの回答によると、私はこれを別の方法で試す必要があると思いますか?このような状況では、1ページあたりのクエリ数を教えてください。 (したがって、1つのクエリの代わりに、20のクエリのように) – Abayob

+0

@Abayob - 上記のような何かが動作するはずです。あなたはあなたのテーブルを宣言することができますし、サンプルデータのビットそれから私はそれをテストする機会があります。私のコードをもう一度見ても問題はおそらくサブクエリがlast_changeの日付をUNIX_TIMESTAMPに変換したと思われます - 今すぐコードを更新してみてください。 – Kickstart

+0

Aaah ofcourse、私を起こさせてください!最初にそれをチェックし、まだ動作しない場合は、SQLの例を作成します。 – Abayob

関連する問題