0

COUNT(page_ID)値を@current_rankとして取得したいだけですが、WHERE句を尊重するが異なる日付( "rating_time")の "page_ID"のレコードを複数持つことができるため、MAX(rating_time)をさらに使用する必要があります。

そして、これらの潜在的な複数のpage_IDレコードの中で、最新のものが必要です。

SET @current_rank = (SELECT COUNT(page_ID), MAX(rating_time)
    FROM ranks_update
    WHERE ranking_ID = NEW.ranking_ID
        AND page_ID <> NEW.page_ID 
        AND current_sum_vote >= @current_sum_vote
        AND rating_time >= ( *** a subquery *** ) 
    GROUP BY page_ID);

PS:MySQLでトリガーを使用しています。

4

3 に答える 3

1

試す

SELECT @current_rank = COUNT(page_ID), @max_rating = MAX(rating_time)
    FROM ranks_update
    WHERE ranking_ID = NEW.ranking_ID
        AND page_ID <> NEW.page_ID 
        AND current_sum_vote >= @current_sum_vote
    GROUP BY page_ID;
于 2012-08-03T03:42:11.137 に答える
0

解決策は次のとおりだと思います(間違っている場合は修正してください):

SELECT COUNT(page_ID)
    FROM (
    SELECT page_ID, MAX(rating_time)
    FROM ranks_update
    WHERE ranking_ID = NEW.ranking_ID
        AND page_ID <> NEW.page_ID 
        AND current_sum_vote >= @current_sum_vote
        AND rating_time >= (*** a subquery ***) 
    GROUP BY page_ID
    ) ru
于 2012-08-03T15:00:40.837 に答える