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

百里沐希 阅读 76

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

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

我来解答 赞 9 收藏
二维码
手机扫码查看
2 条解答
小青 Dev
说到Jira JQL查询,当时我也卡在这上面不少时间。你的问题其实出在状态名称上,大多数情况下需要使用英文。

正确的写法应该是这样:project in (ProjectA, ProjectB) AND status = 'In Progress'。注意这里的 'In Progress' 要用英文,虽然界面显示中文,但JQL里得用英文状态名。

另外再分享个小经验,如果不确定状态名是什么,可以到issue详情页看URL参数,那里会有准确的状态标识符。我以前老是直接猜,结果浪费好多时间。

还有个调试技巧,先单独验证每个条件是否正确。比如先运行 project in (ProjectA, ProjectB),确认返回了你想要的项目,再加状态过滤。

这下应该就能正常工作了,要是还不行,建议检查下这两个项目的配置是不是有特殊设置,毕竟有时候管理员会自定义状态名称。
点赞
2026-04-01 00:02
秀玲 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应该是先确保逻辑分组正确,再确认字段值和系统实际存储一致。我建议你先用单个项目调试状态名,确认后再扩展到多项目,一步步来,别一上来就组合复杂条件。
点赞 10
2026-02-12 23:04