2013-08-19 77 views
0

我有一個來自sql查詢的結果集,我需要對彼此進行比較。將SQL結果行與對方進行比較

例子:

ID | VALUE | Comment | sort | store | price 
1 test  main  des f1  5 
2 each  sec  asc f2  10 
3 test  main  des f1  12 

現在從結果集我只需要獲得其中的值,註釋,整理和存儲都是一樣的行。

喜歡:

ID | VALUE | Comment | sort | store | price 
    1 test  main  des  f1  5 
    3 test  main  des  f1  12 

,所以我需要改變

select id, value, comment, sort, store, price from test.table 

,並做匹配。

關於如何做到這一點的任何想法?

在此先感謝。

TheVagabond

回答

2

大多數SQL數據庫都支持窗口函數。你可以這樣做的:

select id, value, comment, sort, store, price 
from (select t.*, 
      count(*) over (partition by value, comment, sort, store) as cnt 
     from t 
    ) t 
where cnt > 1; 
+0

我想你會'cnt> 1'而不是0. –

+0

@ChristinePenza。 。 。謝謝。 –

+0

感謝您的幫助 – Thevagabond

1

如果你的數據庫不支持窗口的功能,你可以試試下面的查詢:

select 
    * 
from 
    (
     select 
      value, comment, sort, store 
     from 
      test 
     group by 
      value, comment, sort, store 
     having count(*) > 1 
    ) as t 
    inner join test on (
     test.value = t.value and test.sort = t.sort and test.сomment = t.сomment and test.store = t.store 
    ) 

但我建議你另一個輸出「對方」比較:

select 
    t1.id, t2.id, t1.VALUE, t1.sort, t1.store, t1.price, t2.price 
from 
    test t1 
    join test t2 on (t2.id > t1.id and t1.value = t2.value and t1.sort = t2.sort and t1.store = t2.store and t1.comment = t2.comment) 
相關問題