多条件MySQL查询求助:单表展示不同技能的等级校验结果
解决MySQL多条件查询需求的方案
嘿,我来帮你搞定这个查询问题!你需要同时查询满足两个不同skill_id和对应等级条件的记录,并且把结果放在同一张表里,其实只需要调整WHERE子句的逻辑就能实现。
修改后的查询语句
SELECT name, invTypes.typeName, character_skills.trained_skill_level, -- 可选:添加一个字段明确标识是哪个技能的条件匹配结果 CASE WHEN character_skills.skill_id = 12203 THEN '技能12203(等级<5)' WHEN character_skills.skill_id = 12204 THEN '技能12204(等级<4)' END AS skill_match_note FROM character_skills INNER JOIN character_infos ON character_infos.character_id = character_skills.character_id INNER JOIN invTypes ON character_skills.skill_id = invTypes.typeID WHERE name = 'Mokey PYD' AND ( (skill_id = 12203 AND character_skills.active_skill_level < 5) OR (skill_id = 12204 AND character_skills.active_skill_level < 4) );
逻辑说明
- 用括号把每组条件(skill_id + 等级限制)包裹起来,确保逻辑判断的优先级正确,避免因为AND和OR的优先级问题导致结果不符合预期。
- 外层的
name = 'Mokey PYD'确保只查询指定用户的记录,然后通过OR连接两个目标条件,只要满足其中一组条件的记录都会被筛选出来。 - 可选的
skill_match_note字段是为了让你更直观地看到每条结果匹配的是哪个条件,不需要的话可以直接删掉这部分。
如果你的需求是两个条件的结果要分开展示但在同一个结果集里(比如一行显示一个技能的信息),这样的写法完全适用;如果是要把两个技能的信息放在同一行,那可能需要用自连接或者子查询,不过从你的描述来看,第一种写法应该就是你需要的~
内容的提问来源于stack exchange,提问作者Mokey
相关产品推荐
相关产品推荐

