【发布时间】:2021-12-29 12:48:56
【问题描述】:
+----+------+-------+---------+---------+
| id | order| value | type | account |
+----+------+-------+---------+---------+
| 1 | 1 | a | 2 | 1 |
| 1 | 2 | b | 1 | 1 |
| 1 | 3 | c | 4 | 1 |
| 1 | 4 | d | 2 | 1 |
| 1 | 5 | e | 1 | 1 |
| 1 | 5 | f | 6 | 1 |
| 2 | 6 | g | 1 | 1 |
+----+------+-------+---------+---------+
我需要选择该表的所有字段,但每个 id+type 组合只能选择 1 行(我不在乎类型的值)。但是我尝试了一些没有结果的方法。
在我创建 DISTINCT 的那一刻,我无法包含其余字段以使其在子查询中可用。如果我在子查询中添加 ROWNUM,所有行都会有所不同,这会导致它不起作用。
一些想法?
目前我更好的查询是:
SELECT ID, TYPE, VALUE, ACCOUNT
FROM MYTABLE
WHERE ROWID IN (SELECT DISTINCT MAX(ROWID)
FROM MYTABLE
GROUP BY ID, TYPE);
【问题讨论】:
-
请从该输入中显示您需要的确切输出。
-
您希望每个
id和type有一行。value可以取自任何行。还有account?您只需要帐户 1 吗?或者您实际上想要每个id和type和account一行?或者你想像value一样从行中获取任意account? -
每个 id 的帐户值始终相同(与值相关)。抱歉隐私,我可以分享真正的价值观,我用通用名称值创建了一个快速简单的例子
-
您不关心选择了哪一行,但每次运行查询时它是否需要是同一行(确定性)?您是否需要它是不确定的并且每次运行时能够返回不同的行?等等等等?
-
这能回答你的问题吗? Select First Row of Every Group in sql
标签: sql oracle distinct distinct-values