在以下情况下, < 比较与 != 有何不同?

How is having < comparison different than != in following case?

我试图在 https://dedupeio.github.io/dedupe-examples/docs/mysql_example.html 上理解这个例子。在以下情况下,< 比较与 != 有何不同?

 read_cur.execute("""
           select a.donor_id,
                  json_object('city', a.city,
                              'name', a.name,
                              'zip', a.zip,
                              'state', a.state,
                              'address', a.address),
                  b.donor_id,
                  json_object('city', b.city,
                              'name', b.name,
                              'zip', b.zip,
                              'state', b.state,
                              'address', b.address)
           from (select DISTINCT l.donor_id as east, r.donor_id as west
                 from blocking_map as l
                 INNER JOIN blocking_map as r
                 using (block_key)
                 **where l.donor_id < r.donor_id) ids**
           INNER JOIN processed_donors a on ids.east=a.donor_id
           INNER JOIN processed_donors b on ids.west=b.donor_id
           """)

VS

    read_cur.execute("""
           select a.donor_id,
                  json_object('city', a.city,
                              'name', a.name,
                              'zip', a.zip,
                              'state', a.state,
                              'address', a.address),
                  b.donor_id,
                  json_object('city', b.city,
                              'name', b.name,
                              'zip', b.zip,
                              'state', b.state,
                              'address', b.address)
           from (select DISTINCT l.donor_id as east, r.donor_id as west
                 from blocking_map as l
                 INNER JOIN blocking_map as r
                 using (block_key)
                 **where l.donor_id != r.donor_id) ids**
           INNER JOIN processed_donors a on ids.east=a.donor_id
           INNER JOIN processed_donors b on ids.west=b.donor_id
           """)

当您使用 < 时,您可以放心,每对只会包含一次。

l.donor_id  r.donor_id
    1           2
    3           4

而如果您使用 !=,每对将包含两次。

l.donor_id  r.donor_id
    1           2
    2           1
    3           4
    4           3