我对 SQL 很陌生,虽然我可以编写大部分查询,但我对这个查询一无所知。我想在一个可以使用 JPA 执行的查询中实现这一点。
TABLE RULE:
RULE_ID ENABLED
-----------------
1 0
2 0
3 0
4 1
5 1
TABLE MISC:
MISC_ID
--------
1
2
TABLE HOLD:
HOLD_ID MISC_ID RULE_ID READY
------------------------------------
1 1 1 1
2 1 2 1
3 1 3 1
4 2 4 0
5 2 1 1
我只想从 HOLD 中选择每行 READY=1 且 RULE_ID 位于的 MISC_IDs(RULE_IDs where ENABLED=0)。在上面的示例中,查询应该返回 MISC_ID = {1},因为 HOLD_ID 1、2 和 3 都具有 READY=1 并且 RULEs 1、2 和 3 都被禁用。
MISC_ID 2 不应返回,因为 HOLD_ID 4 的 READY=0。
MISC 和 HOLD 表有数百万行,但 RULE 相当小(<1000 行)。
关于如何编写本机 SQL 来实现这一点的任何建议?PL/SQL 不是一个选项。