Jira JQL怎么同时筛选两个项目和’进行中’状态的issue?

百里沐希 阅读 36

我在Jira里想查两个项目的’进行中’状态的issue,但试了好多次都不对。比如写project = ProjectA OR ProjectB AND status = '进行中',结果却包含了其他项目的任务。是不是语法哪里错了?该怎么正确组合多个项目和状态条件?

我试过把项目名放进括号:project in (ProjectA, ProjectB) AND status = '进行中',但这次完全没结果。明明这两个项目里都有’进行中’的issue,JQL明明没问题啊?是不是状态名称要写英文?

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
秀玲 Dev
你这个JQL问题很典型,我也踩过同样的坑。根本原因出在运算符优先级和状态名称的准确性上,我们一步步来看。

首先你写的 project = ProjectA OR ProjectB AND status = '进行中' 这个查询逻辑是有问题的。JQL里AND的优先级高于OR,所以实际上执行的是 project = ProjectA OR (ProjectB AND status = '进行中'),但ProjectB根本不是布尔条件,这里语法都不对,Jira会尝试解析但结果不可控,很可能返回一堆不符合预期的数据。

第二个尝试:project in (ProjectA, ProjectB) AND status = '进行中' 语法其实是对的,但没结果说明大概率是状态名不匹配。这是最关键的细节 —— Jira里的状态显示名可能是中文,但JQL查询时要看后台的实际状态名,很多系统后台还是用英文状态比如"In Progress"。

你可以这样验证:随便点开一个这两个项目里的issue,看它的status字段鼠标hover或者点进去详情,看实际值是什么。或者更直接,在JQL里先单独查一个项目的所有issue:project = ProjectA,然后看返回的issue状态字段写的是什么。

假设你发现实际状态是"In Progress",那正确写法就是:

project in ("ProjectA", "ProjectB") AND status = "In Progress"


注意几点细节:
- 项目名如果有空格或特殊字符必须加双引号,虽然没有也常能运行,但加了更安全
- 状态值一定要和系统后台一致,大小写也要匹配,JQL在这里是区分大小写的
- 使用in操作符比多个OR更清晰,也避免括号嵌套带来的歧义

如果你坚持要用中文状态名,可以试试把状态用引号包起来写成 status = "进行中",但这取决于你们Jira实例的配置。有些本地化做得好的实例支持,但多数原生Jira还是认英文internal状态名。

还有一种方法是用状态类别(statusCategory)来查,比如所有“进行中”类别的状态(可能包括“In Progress”、“开发中”等),这样更健壮:

project in ("ProjectA", "ProjectB") AND statusCategory = "In Progress"


注意这里的“In Progress”是固定值,对应“进行中”这个类别,它不会变,比具体状态名靠谱多了。

总结一下,你原来的问题有两个层面:一是语法结构,二是数据匹配。正确的JQL应该是先确保逻辑分组正确,再确认字段值和系统实际存储一致。我建议你先用单个项目调试状态名,确认后再扩展到多项目,一步步来,别一上来就组合复杂条件。
点赞 5
2026-02-12 23:04