我有一张Bills表,每张Bill可以有20个子注册表。
示例(每张账单前5名,可能高达60,000张账单)
(表一)
Bill | SubRow |
-----+------------+
1000 | 1 |
1000 | 2 |
1000 | 3 |
1000 | 4 |
1000 | 5 |
1001 | 1 |
1001 | 2 |
1001 | 3 |
1001 | 4 |
1001 | 5 |
在另一张表中,我有条例编号和一系列子画面
实施例: (表二)
Bill | InitialRange | Final Range|
-----+--------------+------------+
1000 | 1 | 2 |
1000 | 4 | 5 |
1001 | 3 | 5 |
在查询中,我想实现以下目标:
从表1中显示所有不在表2中的范围之间的记录。
这意味着我应该得到以下内容:
Bill | SubRow |
-----+------------+
1000 | 3 |
1001 | 1 |
1001 | 2 |
到目前为止我所拥有的:
Select Bill,SubRow
from TABLE ONE
LEFT join TABLE TWO ON TABLEONE.Bill= TABLETWO.bill
where Subrow < InitialRange and Subrow > FinalRange
但是TABLETWO第二行中的第二个条件会覆盖1000法案的第一个条件。
关于如何实现这一目标的任何想法?
注意(我的表格显得格格不入,我会尝试修复它)
图片示例:
答案 0 :(得分:1)
试试这个:
SELECT * FROM TABLE_ONE WHERE NOT EXISTS
(SELECT * FROM TABLE_TWO
WHERE TABLE_ONE.Bill = TABLE_TWO.Bill
AND TABLE_ONE.SubRow BETWEEN TABLE_TWO.IinitialRange AND TABLE_TWO.FinalRange)