我不使用Access,但是这就是我使用ANSI sql处理它的方式。
SELECT
*
FROM
ABC AS first
INNER JOIN
ABC AS second
ON second.Hugo_Symbol = first.Hugo_Symbol
AND second.Start_Position <= first.Start_Position + 20
AND second.Start_Position > first.Start_Position
这可能会返回您期望的更多数据,并可能返回期望的其他格式。
First.Hugo_Symbol First.Start_Position Second.Hugo_Symbol Second.Start_Position
TP53 987654 TP53 987660
TP53 987654 TP53 987662
TP53 987660 TP53 987662
APOB 12345 APOB 12350
APOB 12350 APOB 12359
APOB 12350 APOB 12359
上面的答案对“每个其他”都有很大的影响。
如果将需求重新定义为“所有其他记录,其中另一个记录存在相同的符号,并且该位置具有其自己的位置的20个位置”,则您可能会得到类似…的信息。
SELECT
*
FROM
ABC AS data
WHERE
EXISTS (SELECT *
FROM ABC AS lookup
WHERE lookup.hugo_symbol = data.hugo_symbol
AND lookup.start_position >= data.start_position - 20
AND lookup.start_position <= data.start_position + 20
AND lookup.start_position <> data.start_position
)
但是Access2000受到我通常使用的数据库的限制。我不知道Access2000可以做什么和不能做什么。