我有一个包含以下各列的表格

NAME      FRIEND
----------------------
Apple     Flavour
Flavour   Apple
New       Banana
Banana    Flavour


我想删除例如具有相同组合记录的列
苹果,味道和味道,苹果是一样的。当我们重复这样的组合时,我只希望两个记录中的一个记录。

最佳答案

您可以使用LEAST和GREATEST函数来获取唯一的组合。

例如,

SQL> WITH DATA AS(
  2  SELECT 'apple' a,   'flavour' b FROM dual UNION ALL
  3  SELECT 'flavour',   'apple' FROM dual UNION ALL
  4  SELECT 'new',   'flavour' FROM dual UNION ALL
  5  SELECT 'banana',   'fruit' FROM dual
  6  )
  7  SELECT least(a,b) a,
  8    greatest(a,b) b
  9  FROM data
 10  GROUP BY least(a,b),
 11    greatest(a,b)
 12  /

A       B
------- -------
banana  fruit
apple   flavour
flavour new

SQL>

09-26 23:30