create table TEST_1
(
  LOC_ID  NUMBER,
  PROD_ID NUMBER,
  COUNT   NUMBER,
  ID      NUMBER
)insert into TEST_1 (LOC_ID, PROD_ID, COUNT, ID)
values (101, 111, 2, 1);insert into TEST_1 (LOC_ID, PROD_ID, COUNT, ID)
values (102, 111, 3, 2);insert into TEST_1 (LOC_ID, PROD_ID, COUNT, ID)
values (103, 111, 4, 3);insert into TEST_1 (LOC_ID, PROD_ID, COUNT, ID)
values (104, 222, 1, 4);insert into TEST_1 (LOC_ID, PROD_ID, COUNT, ID)
values (105, 222, 2, 5);insert into TEST_1 (LOC_ID, PROD_ID, COUNT, ID)
values (106, 333, 1, 6);问题:如何查出prod_id相同条数〉1的所有字段
需要结果:
101 111 2 1
102 111 3 2
103 111 4 3
104 222 1 4
105 222 2 5

解决方案 »

  1.   

    select prod_id,count(*) from TEST_1 group by prod_id
      

  2.   


    select *
    from test_1
    where test_1.prod_id in (
    select t.prod_id
    from test_1 t
    group by t.prod_id
    having count(prod_id) > 1)
      

  3.   

    3楼你好,我现在写的SQL就到这一步了
    目前的困境就是,prod_id不是唯一索引!,有可能取出多余数据!
      

  4.   

    SELECT * FROM (SELECT A.*,COUNT(1) OVER(PARTITION BY PROD_ID) CN FROM TEST_1 A) WHERE CN>1
      

  5.   

    oracle rank over()函数对结果进行排序。
      

  6.   

    http://blog.csdn.net/zftang/article/details/6595516
    http://blog.csdn.net/zftang/article/details/6601500