我有一个返回的查询:
class Iter(Parser):
def __init__(self, Parser):
self.totalEntriesI = Parser.self.totalEntries
我想只包含ID值字段中没有linknum的ID。例如,我想要
ID LINKID
A B
B A
C D
E F
D C
如何实现这一目标或扫描两列的好方法,以便如果linknum与ID相同,我们不会将其添加到结果中?
答案 0 :(得分:0)
一个简单的内部联接应该这样做。
select
t.*
from myTable t
inner join myTable t1 on
t.id = t1.linkid
答案 1 :(得分:0)
您需要添加两列:FirstId
和LastId
,它们将按时间顺序包含ID
和LINKID
的第一个值。然后,使用ROW_NUMBER
获得所需的结果:
WITH Cte AS(
SELECT *,
FirstId = CASE WHEN ID < LINKID THEN ID ELSE LINKID END,
LastId = CASE WHEN ID > LINKID THEN ID ELSE LINKID END,
RN = ROW_NUMBER() OVER(
PARTITION BY
CASE WHEN ID < LINKID THEN ID ELSE LINKID END,
CASE WHEN ID > LINKID THEN ID ELSE LINKID END
ORDER BY ID
)
FROM tbl
)
SELECT
ID, LINKID
FROM Cte
WHERE RN = 1