如何使用条件检查两件事,当两件事为真时,它会提供信息

萨米国外

我编写了一个代码来告诉我一个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类剑。

但是当我and在2括号之间加上一个时,它什么也没做并且它显示了当我使用时所有人民都亲手使用剑or,因此不使用2剑的人民也会出现。

我不知道该如何选择玩家名称和等级(因为当他们使用2把剑时,他们的名字会出现两次而不是一次),因此请检查他们的手,以及如果他们手里都有剑,请​​显示他们的名字和水平。

专线小巴

你要检查items属于给定的字符满足条件,这表明聚集:

select c.name 
from characters c
inner join items i on i.characterId=c.characterId
where 
    i.level > @level
    and i.equipslot in (5, 6)
    and i.itemid in (2002, 2005, 2010, 2012, 2017, 2026, 2031, 2034, 2054, 2059)
group by c.name
having count(distinct equipslot) = 2

如果要显示每只手的水平,可以执行以下操作:

select c.name, 
    max(case when i.equipslot = 5 then level end) level_hand_5,
    max(case when i.equipslot = 6 then level end) level_hand_6
from characters c
inner join items i on i.characterId=c.characterId
where 
    i.level > @level
    and i.equipslot in (5, 6)
    and i.itemid in (2002, 2005, 2010, 2012, 2017, 2026, 2031, 2034, 2054, 2059)
group by c.name
having count(distinct equipslot) = 2

笔记:

  • 在多表查询中,最好的做法是在每一列之前添加它所属的表;我做了一些假设,您可能需要复习

  • in可以方便地缩短多个or条件

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

悬停时显示两件事

来自分类Dev

如何使用UIColorPickerViewController更改两件事的颜色

来自分类Dev

如何使用ncurses同时打印两件事

来自分类Dev

方案中的条件谓词后如何使用两件事?

来自分类Dev

在球拍中为“循环”做两件事

来自分类Dev

如何使一个按钮做两件事?

来自分类Dev

使用 nodejs 同时做两件事

来自分类Dev

使用 LinkText 一次搜索两件事

来自分类Dev

如何在 Python 中使用 Regex 提取两件事?

来自分类Dev

三元:做两件事

来自分类Dev

从数据表中提取两件事的总和

来自分类Dev

形式相互依赖的两件事

来自分类Dev

使button.click事件做两件事

来自分类Dev

用命令的输出做两件事

来自分类Dev

我没办法做两件事

来自分类Dev

在Linux上同时安装两件事

来自分类Dev

正则表达式:如何一次过滤两件事

来自分类Dev

Lua-如何在一个打印语句中打印两件事

来自分类Dev

如何在文件中对此(两件事)进行grep?

来自分类Dev

当鼠标悬停在Flash中时,如何使这两件事同时发生

来自分类Dev

使用catimg并排显示两件事(例如neofetch中的内容)

来自分类Dev

在 Raspberry Pi 上通过 GPIO SPI 连接使用两件事

来自分类Dev

两个按钮,用Jquery做两件事

来自分类Dev

一种API方法可做两件事;创建API时的好习惯吗?

来自分类Dev

AngularJS-动态更改类并加载JSON-确实有两件事

来自分类Dev

FILE vs HANDLE-这两件事有什么区别

来自分类Dev

我试图在javascript中做一个简单的按钮,做两件事

来自分类Dev

Autoit make按钮可以做两件事。彼此一击

来自分类Dev

将两件事放在同一行上,然后写入文件