用于比较行与SQL之间的组或条件语句

时间:2015-07-24 22:11:02

标签: sql-server

我有一个返回的查询:

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相同,我们不会将其添加到结果中?

2 个答案:

答案 0 :(得分:0)

一个简单的内部联接应该这样做。

select
t.*
from myTable t
inner join myTable t1 on
    t.id = t1.linkid

答案 1 :(得分:0)

您需要添加两列:FirstIdLastId,它们将按时间顺序包含IDLINKID的第一个值。然后,使用ROW_NUMBER获得所需的结果:

SQL Fiddle

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