You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多条件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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:20:05