• 请不要在回答技术问题时复制粘贴 AI 生成的内容
qiyong
V2EX  ›  程序员

sql AB, BA 去重问题请教

  •  
  •   qiyong · Nov 29, 2022 · 3031 views
    This topic created in 1437 days ago, the information mentioned may be changed or developed.

    需求为:表中同时存在数据 AB 和 BA ,如{34 ,66} 和 {66 ,34} 但我们只想保留其中一种情况( AB 和 BA 视为同一种情况),如果表数据如下怎么做?

    num_1 num_2
    30 24
    24 30
    958 497
    88 99
    9 replies  •  2022-11-29 15:11:16 +08:00
    malusama
    malusama
    Nov 29, 2022
    1
    num_1 和 num_2 拼接, 排序, 然后用 row_number 打上序号
    只去一个就可以
    qinrui
    qinrui
    Nov 29, 2022
    2
    update table xxx set num_3 =case when num_1>num_2 then num_2 else num_1 end ,num_4= case when num_1>num_2 then num_1 else num_2 end
    optional
    optional
    Nov 29, 2022 via iPhone
    3
    对 ab 排序拼接,然后 group by 或者 district by
    optional
    optional
    Nov 29, 2022 via iPhone
    4
    打错了 distinct
    qiyong
    qiyong
    OP
    Nov 29, 2022
    5
    @optional 可否给出个 sql 呢
    qiyong
    qiyong
    OP
    Nov 29, 2022
    6
    @malusama
    @optional 可否给出个 sql 呢
    bxb100
    bxb100
    Nov 29, 2022❤️1
    7
    ```sql
    select distinct least(col_1, col_2), greatest(col_1, col_2)
    from the_table
    order by 1
    ```

    https://stackoverflow.com/questions/64422759/remove-duplicate-combinations-between-two-columns-of-char-data-type-in-sql
    SJH0402
    SJH0402
    Nov 29, 2022
    8
    @bxb100 老哥厉害
    zhzy0077
    zhzy0077
    Nov 29, 2022
    9
    create table A (
    id BIGINT IDENTITY(1,1),
    x int,
    y int
    );

    insert into A values (30, 24), (24, 30), (958, 497), (88, 99)

    这就是重复的行 要不重复的取个反就行

    SELECT * FROM A
    FULL OUTER JOIN A AA ON A.id <> AA.id
    WHERE (
    A.x = AA.x AND A.y = AA.y
    ) OR (
    A.x = AA.y AND A.y = AA.x
    )
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2921 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 11:24 · PVG 19:24 · LAX 03:24 · JFK 06:24
    ♥ Do have faith in what you're doing.