Java 基于一列中的多个条件获取记录
我有一张“行动任务”表和一张“行动可变”表。每个任务都有许多变量,我想根据一些变量得到一组任务,例如: 行动任务Java 基于一列中的多个条件获取记录,java,sql,workflow,activiti,Java,Sql,Workflow,Activiti,我有一张“行动任务”表和一张“行动可变”表。每个任务都有许多变量,我想根据一些变量得到一组任务,例如: 行动任务 | ID | PROC_INST_ID_ | ----------------------------- | 20 | 35 | 及 变戏法 | ID | PROC_INST_ID_ | NAME_ | TEXT_ ---------------------------------------------- | 44
| ID | PROC_INST_ID_ |
-----------------------------
| 20 | 35 |
及
变戏法
| ID | PROC_INST_ID_ | NAME_ | TEXT_
----------------------------------------------
| 44 | 35 | initiator | user1
| 45 | 35 | team | team1
| 46 | 35 | status | 0
| 47 | 35 | profile | null
现在,PROC_INST_ID_“35”的任务有许多变量
所以我想得到一个或多个基于变量条件的任务,比如
我想通过initiator=“user1”和team=“team1”获得任务
我写了这个查询,但没有得到任何结果
SELECT *
FROM ACT_RU_TASK JOIN
ACT_RU_VARIABLE
ON ACT_RU_TASK.PROC_INST_ID_ = ACT_RU_VARIABLE.PROC_INST_ID_
WHERE (ACT_RU_VARIABLE.NAME_='initiator' AND ACT_RU_VARIABLE.TEXT_='user1') AND (ACT_RU_VARIABLE.NAME_='team' AND ACT_RU_VARIABLE.TEXT_='team1')
注意:我正在使用Java中的Activity Framework,我想创建本机任务查询。我想您需要聚合和
具有用于筛选的
:
SELECT v.PROC_INST_ID_
FROMACT_RU_VARIABLE v
WHERE (v.NAME_ = 'initiator' AND v.TEXT_ = 'user1') OR
(v.NAME_ = 'team' AND v.TEXT_ = 'team1')
GROUP BY v.PROC_INST_ID_
HAVING COUNT(*) = 2; -- both attributes match
这将检查两个属性是否匹配。您可以从其他表中加入其他信息。但是要获得
PROC\u INST\u ID\u
你不需要ACT\u RU\u任务
,但是你能解释一下为什么使用“或”?@amer\u Salah。因为条件必须在不同的行上匹配。对于和,没有行可能匹配。为什么使用count=2?如果我在where子句中添加新条件,我应该将计数增加到3@amer_Salah . . . 对如果你有更多的条件,你会添加需要匹配的数字。但是如果我加入了ACT_RU_________________________________??