如果重复(不是 DISTINCT),只获取一个数据

Just get one data if duplicate (not DISTINCT)

我在 mysql (headers: depicao, arricao) 中的查询得到以下结果:

EDDH、EDDK
EDFH、EDDL
EDDS、EDDH
EDDK、EDDH

我现在的问题是,如果数据存在于相关 "EDDH - EDDK" AND "EDDK - EDDH".

中,我只想要其中一行

这个结果的查询是这样的:

SELECT DISTINCT p.depicao, p.arricao FROM xyz WHERE xxyyzz = 1

感谢您的帮助!

我认为 row_number() 可以满足您的要求:

select p.*
from (select p.*,
             row_number() over (partition by least(p.depicao, p.arricao), greatest(p.depicao, p.arricao) order by rand()) as seqnum
      from p
     ) p
where seqnum = 1;

您可以在子查询中添加额外的过滤条件,您的查询中似乎有,但您的问题中没有。

以与 GREATESTLEAST 一致的方式对列进行排序,然后使用 SELECT DISTINCT 删除重复项。

SELECT DISTINCT GREATEST(depicao, arricao) as col1, LEAST(depicao, arricao) AS col2
FROM xyz
WHERE ...