GROUP BY和DISTINCT不起作用

时间:2015-04-10 18:37:44

标签: sql group-by distinct

使用Group by

SELECT Column1, Column2, Column3
FROM Table
GROUP BY Column1, Column2, Column3
ORDER BY Column1

Distinct

SELECT DISTINCT Column1, Column2, Column3
FROM Table
ORDER BY Column1

这些查询不会出错,但不会对我的结果进行分组。我尝试按Column1分组。这些查询有什么问题?
提前谢谢。

编辑:
通过这些查询,我得到结果为
Value1 Value2
Value1 Value3
Value3 Value4
Value4 Value5
Value4 Value6

但我希望得到结果为
Value1 Value2
Value3 Value4
Value4 Value5

编辑:
对不起,我弄错了; Value5和Value6是唯一值,因此无法省略......

2 个答案:

答案 0 :(得分:0)

示例测试显示结果:

  SQL> create table junk (
    2     col1  number,
    3     col2  number,
    4     col3  number
    5     )
    6  /

  Table created.

  SQL>
  SQL> insert into junk values ( 100, 200, 300 );

  1 row created.

  SQL> insert into junk values ( 100, 200, 300 );

  1 row created.

  SQL> insert into junk values ( 100, 200, 400 );

  1 row created.

  SQL> insert into junk values ( 400, 200, 300 );

  1 row created.

  SQL>
  SQL> commit;

  Commit complete.

  SQL>
  SQL> select col1, col2, col3
    2    from junk
    3   group by col1, col2, col3
    4   order by col1
    5  /

        COL1       COL2       COL3
  ---------- ---------- ----------
         100        200        300
         100        200        400
         400        200        300

  SQL> select distinct col1, col2, col3 from junk order by col1;

        COL1       COL2       COL3
  ---------- ---------- ----------
         100        200        300
         100        200        400
         400        200        300

  SQL>

如果这不起作用,则显示类似于不同数据的内容......完全可重现且可重新运行。 (我使用过Oracle,但上面应该适用于任何数据库)

注意两个查询"如何组合"前2行(100,200,300)成为"单"行。那是什么发生了什么。如果您想要其他事情发生,请添加更多细节以解释;)

答案 1 :(得分:0)

我通过省略具有唯一值的列来修复我的问题。

SELECT DISTINCT Column1 FROM Table ORDER BY Column1