【问题标题】: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 子查询假定您的播放器表中至少有一条记录。