如何使用记录构建查询,使 2 列是唯一的? 这是我尝试的代码:
Select x.a, y.b
from table1 x, table2 y
where x.id = y.id;
1 - a
2 - b
3 - a
4 - b
5 - c
1 - c
6 - a
2 - a
should return this:
1 - a
2 - b
5 - c
但是有数据丢失,没关系,我只想要两个唯一的列。 我曾尝试使用 group by,但这并没有获得两者的唯一性。 为了更好地描述背后的意图: 上面的table1存储分类,table2存储值。一个分类可以有多个值,一个值可以属于任意数量的分类。现在我想从 table1 中选择所有(或部分)分类并对应于每个选择一个值,条件是如果它与任何其他分类一起选择,则这些值不应重复。在我的示例中,1、2、3..6 是分类,a、b、c 是值。现在我想选择分类和相应的值,我选择了分类 1、2、5 和相应的值 a、b、c,因为所有其他分类都会使值重复(比如 3 会使值重复,因为 a 已经通过分类选择了1).
最佳答案
OP 正在寻找具有任意分类(表 1)的唯一值(表 2)。因此,可以使用的方法是枚举 table2 中每组值内的所有分类和值对,然后仅选择每组中的第一个值。
WITH
enumerated_data AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY y.b ORDER BY x.a DESC) rn
, x.a
, y.b
FROM table1 x
INNER JOIN table2 y ON x.id = y.id
)
SELECT a, b
FROM enumerated_data
WHERE rn = 1
关于sql - 在查询中选择 2 个唯一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42231458/