选择特定列中具有不同值的行

问题描述 投票:0回答:1

假设有一个包含三列和一百万行的表。如何编写一条 SQL 语句,其中包含 20.000 行,但有列(第二列)永远不会具有相同值的限制?

假设这是桌子:

名称 - bpchar(17) 生日 - 约会 婚礼 - 日期
保罗 1990-01-01 2010-01-01
苏西 1995-06-01 2020-01-01
路易斯 1995-06-01 2022-06-15

现在假设该表中有一百万行。

我现在想要的是:

  • 百万条目中最多有 20,000 个示例
  • 但要确保结果中的 Bday 始终是唯一的
  • 第一列和第三列中的值可以在结果中出现多次
sql postgresql
1个回答
0
投票

从表中获取 20,000 行,其中每行在特定列(我们称之为“column2”)中都有唯一值。 首先,我们根据第 2 列中的值为每行指定一个唯一的编号。这确保了 column2 中的每个值都有一个从 1 开始的数字。 在这些编号的行中,我们仅保留第 2 列中每个唯一值的第一行。最后,我们从结果中选择 20,000 行,确保每行在第 2 列中都有唯一的值。

用 SQL 编写:

WITH RankedRows AS (SELECT *, ROW_NUMBER() OVER (PARTITION BY column2 ORDER BY (SELECT NULL)) AS rn FROM your_table), UniqueRows AS (SELECT * FROM RankedRows WHERE rn = 1) SELECT * FROM UniqueRows LIMIT 20000;

© www.soinside.com 2019 - 2024. All rights reserved.