【问题标题】:How to remove a row from result having duplicate item如何从具有重复项的结果中删除一行
【发布时间】:2022-07-06 08:46:57
【问题描述】:

假设我有这个查询:

 select item_display_name 
 from all_requirements 
 where state = 'submitted_pending' and id = 'mNAr9viL4='

这显示两个结果/行:

'id proof'
'id proof'

因为all_requirements 的document_id 列中的值之一不同。

我希望查询只返回一次id proof。我该怎么做?

【问题讨论】:

  • 如果您的结果集包含一个重复的列,您可以在第一行添加DISTINCT,如select distinct item_display_name 。

标签: sql postgresql


【解决方案1】:

将 DISTINCT 添加到您的 Select 语句中适用于 1 列。

SELECT DISTINCT ITEM_DISPLAY_NAME 
FROM ALL_REQUIREMENTS 
WHERE
    STATE = 'submitted_pending'
    AND id = 'mNAr9viLD4='

如果要包含 document_id 列或其他列,则可以使用以下代码为每个唯一的 Item_Display_Name 返回 1 条记录。按 ASC 顺序排序的 Order By 语句将为您提供具有最低 document_ID 的记录,但您可以将其更改为 DESC 顺序以提供具有最高 document_ID 的一条记录。

SELECT
    R.ITEM_DISPLAY_NAME,
    R.document_id
FROM
(
    SELECT
        ITEM_DISPLAY_NAME,
        document_id,
        ROW_NUMBER() OVER (Partition BY ITEM_DISPLAY_NAME ORDER BY document_id ASC) AS 'Ranks'
    FROM ALL_REQUIREMENTS
    WHERE
        STATE = 'submitted_pending'
        AND id = 'mNAr9viLD4='
) R
WHERE Ranks = 1

【讨论】:

  • 您也可以将其更改为 SELECT * 以选择所有字段。该查询仍将过滤掉重复的行,并为 ITEM_DISPLAY_NAME 字段中的每个唯一值仅返回 1 行。
猜你喜欢
  • 2021-07-03
  • 2019-01-05
  • 2021-07-13
  • 2015-09-01
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多