SQL Derby:GROUP BY 未选择 id
我正在使用 Derby。
我有一个包含两列 X 和 Y 的表。
我想选择 X 列,但按 Y 列分组。
这意味着我只想为每一行显示一个 X 值及其第一个 Y 值。
我该怎么做?
CREATE TABLE test (
x INTEGER NOT NULL ,
y INTEGER NOT NULL )
INSERT INTO test VALUES (1,1) ,(1,2) ,(1,3) ,(2 ,3),(3,3)
SELECT y FROM test GROUP BY x -- does not work
我想要所有 y 值没有重复的
原始数据
X Y -- -- 1 1 1 2 1 3 2 3 3 3
结果应该是:
X Y -- -- 1 1 1 2 2 3
I am using Derby.
I have a table with two columns X and Y.
I want to select column X but group by column Y.
This means I want to show only ONE X value for each row with the first Y value to it.
How can I do this?
CREATE TABLE test (
x INTEGER NOT NULL ,
y INTEGER NOT NULL )
INSERT INTO test VALUES (1,1) ,(1,2) ,(1,3) ,(2 ,3),(3,3)
SELECT y FROM test GROUP BY x -- does not work
i want all y values with no duplicate
Raw Data
X Y -- -- 1 1 1 2 1 3 2 3 3 3
The results should be:
X Y -- -- 1 1 1 2 2 3
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你必须以某种方式聚合
x
:最小值、最大值、平均值、第一个、最后一个等。
如果您不关心得到哪个
x
,也许只需选择第一个或最后一个:You've got to aggregate
x
in some fashion:Minimum, Maximum, Average, First, Last, etc.
If you don't care which
x
you get, perhaps just choose the first or last:您必须指定您想要的
X
。You must specify which
X
you want.我不熟悉 Derby,但尝试使用如下子查询:
这里 SELECT MIN(Y) FROM table 是选择 Y 的值(即您的“第一个 Y 值”,此处: Y 的最小值)。
I’m not familiar with Derby, but try a sub-query like:
Here
SELECT MIN(Y) FROM table
is to select the value for Y (i.e. your “first Y value”, here: the minimum of Y).