2011-01-28 12 views
0

私はフィールドid(int)とタイムスタンプ(timestamp)を持つs​​tatsテーブルを持っています。カウントを使用している間に別のテーブルから1つのテーブルを更新しますか?

SELECT id FROM stats GROUP BY id ORDER BY count(id) DESC LIMIT 10; 

私にトップ10のIDを与えます。

私は別のテーブルにこれらのIDを入れたい

'人気'

人気はフィールドのID(int型)、位置(INT)とタイムスタンプ(タイムスタンプ)を持っています。

要約すると、私は統計テーブルにある "トップ10"のIDで一般的なテーブルを更新するクエリを作成したいと思います。

+0

**テーブルのサイズはどれくらいですか?**単純に、SELECT .GROUP BYの – ajreal

答えて

1
INSERT INTO `popular` (`id`,`position`,`timestamp`) 
(
    SELECT `id`,COUNT(`id`),NOW() 
    FROM `stats` GROUP BY `id` 
    ORDER BY COUNT(`id`) DESC LIMIT 10 
) 

これは、しかし、更新はないかなりです。これにより、新しい "トップ10"のエントリがstatsからpopularになりますが、 "古いトップ10"は保持されます。前もってTRUNCATEpopularが必要な場合があります。

更新:​​与えられたテーブルを空にします。 DELETE FROMとほぼ同じですが、auto_incrementのプライマリキーもすべてリセットされます。

+0

Linusを使って面倒な作業をすべて省くことができます。私は新しいレコードを追加し続けるので、私は挿入を使用することができません。 TRUNCATEについてもっと教えてください。 – jamjam

+0

@jamjam更新情報を参照してください。 –

+0

私は、Webページ上の一般的なテーブルからデータを消すためにPHPを使用します。このデータをTUNCATEまたはDELETEすると空のWebページが表示されますか?たとえそれが分割されているだけであっても、エラーがあればさらに悪化します。あるいは、私は何も心配しないだろうか? – jamjam

関連する問題