2014-12-01 164 views
-1

我有以下SQL查詢其是否正常工作......SQL查詢僅返回唯一結果

SELECT * 
FROM 
    wp_rg_lead 
    INNER JOIN wp_rg_lead_detail ON 
      wp_rg_lead.id=wp_rg_lead_detail.lead_id 
WHERE wp_rg_lead.form_id = '7' 
and cast(date_created as date) >= current_date - interval '7' day 

我想修改這個只返回唯一的記錄。我的問題是,每個「條目」實際上是幾個像這樣由....

id | form_id | entry_id | value 
-------------------------------------------- 
1  1   75   red 
2  1   75   broken 
3  1   75   apple 
4  7   33   yellow 
5  7   33   faulty 
6  7   33   banana 
7  7   33   ripe 
8  7   22   red 
9  7   22   strawberry 
10  7   22   broken 
11  7   22   squashed 

使用上面的數據我只希望它返回2個結果

+2

你想幹什麼兩個結果它返回?結果表格沒有意義,你選擇的是form_id ='7',但是它返回的記錄中有1個? – Jt2ouan 2014-12-01 16:20:55

+0

我正在構建結果,然後計劃在進行計數之前對它們進行分組,因此我認爲它並不重要,它返回的結果是 – fightstarr20 2014-12-01 16:22:37

+0

對分組進行唯一標識的列,並使用MAX()或其他聚合在無關緊要的欄目上。 – 2014-12-01 16:23:51

回答

0

這是否做什麼你要?

SELECT distinct form_id 
FROM wp_rg_lead INNER JOIN 
    wp_rg_lead_detail 
    ON wp_rg_lead.id = wp_rg_lead_detail.lead_id 
WHERE cast(date_created as date) >= current_date - interval '7' day; 

如果你想要一個完整的任意行,它看起來像你正在使用Postgres的,所以你可以使用distinct on

SELECT distinct on (form_id) * 
FROM wp_rg_lead INNER JOIN 
    wp_rg_lead_detail 
    ON wp_rg_lead.id = wp_rg_lead_detail.lead_id 
WHERE cast(date_created as date) >= current_date - interval '7' day 
ORDER BY form_id, id; 
+0

難道這隻會帶來只有form_id = 7的行嗎?您正在選擇不同的form_id,其中的位置是form_id ='7' – Jt2ouan 2014-12-01 16:25:52

+0

@ BS123。 。 。是。這很奇怪。 OP在問題中有這個「where」條款,並建議它產生結果。顯然它沒有。 – 2014-12-01 16:44:05

+1

是的,這個問題看起來像它返回的結果,但不會因爲where子句form_id = 7只。 – Jt2ouan 2014-12-01 16:46:50