2015-08-27 28 views
5

http://sqlfiddle.com/#!9/ea4d2/1想要消除基於列值的重複記錄

這裏是SQLfiddle來看看。 storepkid 16重複2次。但我只需要一次。我嘗試了DISTINCT,但它消除了整個重複行,所以在這種情況下它不起作用。爲了獲得正確的結果,我需要做什麼修改?請幫忙。

注意:在初始問題中忘記提及我也嘗試過GROUP BY,但它在記錄集結果中給出了不正確的數據。我試圖通過以下方式使用GROUP BY。

http://sqlfiddle.com/#!9/ea4d2/20

http://sqlfiddle.com/#!9/ea4d2/17

NOTE2:@Gabriel巴爾德斯Timbol,我想造成這樣的。重複storepkid的行應該被刪除。

| Storepkid | selldate | 
+---------------+-----------------------+ 
|  19 | August, 25 2015 10:00:00 | 
|  12 | August, 24 2015 19:00:00 | 
|  16 | August, 24 2015 16:00:00 | 
|  15 | August, 23 2015 13:00:00 | 
|  17 | August, 21 2015 10:00:00 | 
+0

你嘗試過使用GROUP BY? –

+0

布朗尼點提供小提琴 – Drew

+0

等待,你能給我們一個你想達到什麼樣的例子嗎?還有一個表結構的樣本? :)請在這裏畫一個 –

回答

2

你可以使用max功能。使用下面的查詢

SELECT p.storepkid, max(p.selldate) AS recentselldate 
FROM 
(SELECT storepkid, purchasedatetime AS selldate 
     FROM t_product_purchase 
UNION ALL 
SELECT storepkid, starttime AS selldate 
     FROM t_service_purchase 
UNION ALL 
SELECT storepkid, selldatetime AS selldatetime 
     FROM t_coupon_purchase) p 
GROUP BY storepkid 
order by max(p.selldate) 
DESC LIMIT 0,5 

OUTPUT:

| Storepkid |  selldate   | 
+---------------------------------------+ 
|  19 | August, 25 2015 10:00:00 | 
|  12 | August, 24 2015 19:00:00 | 
|  16 | August, 24 2015 16:00:00 | 
|  15 | August, 23 2015 13:00:00 | 
|  14 | August, 21 2015 13:15:00 | 

檢查DEMO HERE

+0

這就像魔術......非常感謝你的寶貴幫助。它應該可以正常工作。這是另一件事,我仍然試圖理解MAX()在查詢中的神奇... haha​​ha –

+0

哈哈...希望你很快理解魔術;)...很高興我幫助:) – Crazy2crack

+0

MAX()函數返回所選列的最大值。 [MAX()](http://www.w3schools.com/sql/sql_func_max.asp) –

1

這裏是正確的代碼,我試了一下你的小提琴 Fiddle

我也遇到了類似的問題--->Joining Two Tables

SELECT p.storepkid, p.selldate AS recentselldate FROM (SELECT storepkid, purchasedatetime AS selldate FROM t_product_purchase UNION ALL SELECT storepkid, starttime AS selldate FROM t_service_purchase UNION ALL SELECT storepkid, selldatetime AS selldatetime FROM t_coupon_purchase) p GROUP BY p.storepkid ORDER BY recentselldate DESC LIMIT 0,5 
+0

謝謝你的回覆。我運行了你的查詢,但是8月25日作爲最後一次銷售將storepkid 19作爲最後一次銷售,並且該記錄沒有顯示在記錄集中。 –

+0

ohh是的..以及我想我們可以解決這個問題;)給我幾分鐘給你修改代碼 –

0

由現場只需加組訂單前像那樣

SELECT p.storepkid, p.selldate AS recentselldate FROM (SELECT storepkid, purchasedatetime AS selldate FROM t_product_purchase UNION ALL SELECT storepkid, starttime AS selldate FROM t_service_purchase UNION ALL SELECT storepkid, selldatetime AS selldatetime FROM t_coupon_purchase) p GROUP BY storepkid ORDER BY recentselldate DESC LIMIT 0,5 
+0

感謝您的回覆,GROUP BY在結果集中給出不正確的記錄。請進一步告知。 –