1

さて、それぞれの値を持つ以下のテーブルがあるとしましょう:

create table player(
name varchar(255),
level int
);

INSERT INTO player values ('Fighter', 4);
INSERT INTO player values ('Archer', 2);
INSERT INTO player values ('Assassin', 6);

そして、より高いレベルより下のどのレベルにプレイヤーがいないかを知ることを期待しています。

この場合、結果が必要です: (1,3,5)

私は MYSQL を使用していますが、どのデータベース クエリ ソリューションも解決に役立ちます。

ありがとう。

4

1 に答える 1

1

1) 同じレベルのプレイヤー レコードが存在しないことを確認し、2) 結果を可能な限り高い値よりも低いレベルに制限するクエリを使用する場合、可能なレベル オプションを含むテーブルを追加できます。

ここに例があります。

CREATE TABLE levelOption (
    level int not null primary key
);

INSERT INTO levelOption ( level )
VALUES ( 1 ), ( 2 ), ( 3 ), ( 4 ) , ( 5 ), ( 6 ), ( 7 );

SELECT level
FROM levelOption 
WHERE NOT EXISTS (
        SELECT *
        FROM player
        WHERE player.level = levelOption.level
    )
     AND level < ( SELECT MAX(level) FROM player )
ORDER BY level;

SELECT MAX サブクエリは、プレーヤー テーブルに少なくとも 1 つのレコードがあることを前提としていることに注意してください。

于 2014-04-24T22:14:44.020 に答える