好吧,假设我有下表及其各自的值:
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,但任何数据库查询解决方案都可以帮助我解决。
感谢。
答案 0 :(得分: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子查询假定播放器表中至少有一条记录。