如果重复(不是 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;
您可以在子查询中添加额外的过滤条件,您的查询中似乎有,但您的问题中没有。
以与 GREATEST
和 LEAST
一致的方式对列进行排序,然后使用 SELECT DISTINCT
删除重复项。
SELECT DISTINCT GREATEST(depicao, arricao) as col1, LEAST(depicao, arricao) AS col2
FROM xyz
WHERE ...
我在 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;
您可以在子查询中添加额外的过滤条件,您的查询中似乎有,但您的问题中没有。
以与 GREATEST
和 LEAST
一致的方式对列进行排序,然后使用 SELECT DISTINCT
删除重复项。
SELECT DISTINCT GREATEST(depicao, arricao) as col1, LEAST(depicao, arricao) AS col2
FROM xyz
WHERE ...