如何从选择查询输出的情况下以不敏感的条件来编写选择语句



我正在获取这样的数据

  • 多哈
  • 多哈
  • 迪拜
  • 阿布扎比
  • 阿布扎比

来自查询select distinct(trim(name)) as loc from locations order by trim(name)

现在,我想使用下部((或upper((删除重复项,然后选择第一个记录。如果我使用下面的较低功能,

select distinct(lower(A.loc)) from( select distinct(trim(name)) as loc from locations order by trim(name) ) as A order by lower(A.loc);

它使结果转换为较低如下。

  • doha

  • 迪拜

  • 阿布扎比

    ,但我希望原始结果如前所述。

  • doha

  • 迪拜

  • 阿布扎比

demo:db<> fiddle

SELECT DISTINCT ON (lower(city))
    city
FROM
    cities

DISTINCT ON采用任意列,并发出第一个重复项。在这种情况下,在所有较低情况下,内部创建了一个列。然后是第一个记录,但只有原始列。


Note 您没有特殊的订单。它将被随机顺序(例如,在内部存储数据(。要达到上限值,您必须写:

SELECT DISTINCT ON (lower(city))
    city
FROM
    cities
ORDER BY lower(city), city DESC

演示:db<>小提琴

ORDER BY lower(city)是必要的,因为DISTINCT ON需要给定的列是第一个排序。之后,您可以通过任何其他列订购。ORDER BY column DESC移动上层外壳顶部。

相关内容

  • 没有找到相关文章

最新更新