【发布时间】:2021-02-01 00:48:21
【问题描述】:
我做了一个代码来告诉我一个 rpg 游戏,有多少玩家在使用一个特定的类(所以我检查了第一手,剑,和二手,剑,它应该告诉我任何一个的名称和级别100级以上双手持剑的玩家,代码如下:
declare @level varchar(100)
set @level=80
select level,name from characters c
inner join items i on i.characterId=c.characterId
where
( level>@level AND equipSlot=5 and (
itemId=2002 OR --short sword
itemId=2005 OR --steel rapier
itemId=2010 OR --volt sword
itemid=2012 OR --goblin knife
itemId=2017 OR --crimson sword
itemId=2026 OR --tree splitter sword
itemId=2031 OR --sea king sword
itemId=2034 OR --acrodont blade
itemid=2054 OR --halloween sword
itemId=2059 --stinger
))
and
(level>@level and equipSlot=6 and (
itemId=2002 OR --short sword
itemId=2005 OR --steel rapier
itemId=2010 OR --volt sword
itemid=2012 OR --goblin knife
itemId=2017 OR --crimson sword
itemId=2026 OR --tree splitter sword
itemId=2031 OR --sea king sword
itemId=2034 OR --acrodont blade
itemid=2054 OR --halloween sword
itemId=2059 --stinger
))
ORDER by level desc
所以我检查第一手(equipslot = 6),检查是否装备了一把可用的剑,然后如果第二手(equipslot = 5)也有剑,这意味着这个人正在使用2剑类。
但是当我在 2 括号之间放置 and 时,它什么也没做。
当我使用or 时,它显示所有人都在第一手使用剑,所以也会出现不使用两把剑的人。
我不知道如何选择玩家姓名和等级一次(因为当他们使用 2 把剑时,他们的名字会出现两次而不是一次),所以检查他们的双手,如果他们双手都有剑,显示他们的名字和等级。
【问题讨论】:
标签: sql sql-server inner-join where-clause having-clause