【问题标题】:How to get gaps on dataBases datas如何获取数据库数据的空白
【发布时间】:2014-06-10 10:17:02
【问题描述】:

好吧,假设我有下表及其各自的值:

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,但任何数据库查询解决方案都可以帮助我解决。

谢谢。

【问题讨论】:

    标签: mysql sql database select gaps-in-data


    【解决方案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 子查询假定您的播放器表中至少有一条记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-26
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多