1

この質問を簡単に表現する方法がよくわからないので、質問の名前を変更するための提案を行います。この質問がどれほどばかげているように見えるかを前もってお詫びしますが、私は頭を包むことができない脳のおならの瞬間の1つを持っています. 私が念頭に置いているテーブルは、次のように作成されています。

CREATE TABLE STRUCTURES (X INT(4),Z INT(4),TYPE CHAR(1),SEED_ID BIGINT);

問題は、TYPE='V' と SEED_ID が同じであるエントリの最大量をどのように見つけるかです。この番号を MAX_TYPE_V としましょう。

明確にするために、次のクエリを使用しています。

SELECT SEED_ID 
FROM STRUCTURES 
WHERE TYPE='V' 
GROUP BY SEED_ID 
HAVING COUNT(SEED_ID)=MAX_TYPE_V;

しかし、前述のクエリにプラグインする MAX_TYPE_V を見つける方法がわからないので、私の回避策は、ある番号 i でクエリが失敗するまで、1 から 2^31-1 までの MAX_TYPE_V のクエリを試すことです。つまり、i-1 は私の最大値ですが、率直に言って、これは非常に時間がかかり、非常にばかげています。私はSQLite3を使用しているので、答えはおそらくMySQL構文に取り組むべきです。

4

1 に答える 1

1
  SELECT SEED_ID,
         COUNT(*) AS cnt
    FROM STRUCTURES 
   WHERE TYPE='V' 
GROUP BY SEED_ID 
ORDER BY COUNT(*) DESC
   LIMIT 1
于 2012-09-10T22:51:24.303 に答える