2011-06-15 190 views
10

我有2個表,我正在使用連接從這兩個表中獲取通用記錄。我已經使用了下面的查詢,但我的問題是我得到的記錄加倍。該查詢是如下Mysql加入給出重複行

SELECT * FROM pos_metrics pm INNER JOIN pos_product_selling pps ON 
pm.p_id=pps.p_id WHERE pm.p_id='0' AND pps.pos_buying_id='0' AND pm.type=1 

pos_metrics表:
enter image description here

pos_product_selling表: enter image description here

輸出:

enter image description here

EDIT
當我試圖將GROUP BY和DISTINCT一起使用時,我沒有獲取重複項,但是重複了第二個表中的值。其他解決方案?

回答

4

pos_metrics表中添加主鍵,將其引入到pos_product_selling表,然後根據主鍵做一個JOIN以及其他標準。那麼你將不會得到這些重複。

您在這裏重複的原因是因爲沒有可能在兩個表上根據值進行唯一比較。

+1

你是什麼意思「,並將其介紹到'pos_product_selling'表」 – 2015-07-15 00:45:39

+0

@Ricky B他的意思是創建一列pos_product_selling表,其值是pos_metrics上的主鍵。這種列的典型名稱是「pos_metrics_id」 – 2016-03-23 07:13:08

3

要消除的DUP,使用不同的:

select distinct * from ... 

但我有一種感覺,你的問題是關於別的東西 - 那你需要發佈特定的代碼以獲得更多幫助。

+0

試圖針鋒相對。不工作! – Deepak 2011-06-15 02:46:53

+0

剛剛編輯它。 – 2011-06-15 02:47:35

+0

我的感覺是你需要一個/某個地方的羣體,但你的問題缺乏上下文。 – 2011-06-15 02:48:00

1
SELECT * FROM pos_metrics pm, pos_product_selling pps 
Where pm.p_id=pps.p_id AND pm.p_id='0' AND pps.pos_buying_id='0' AND pm.type=1 

嘗試上面的查詢

+0

仍然不工作.. – Deepak 2011-06-15 02:59:51

7

試試這個:

SELECT DISTINCT * FROM ... 
GROUP BY pm.metrics 
+1

這是工作,但這是正確的方法嗎?我正在處理成千上萬的記錄在這裏.. – Deepak 2011-06-15 09:15:15

+2

檢查我的編輯我有一個問題,您的解決方案.. – Deepak 2011-06-15 11:15:31

7

嘗試像這些

GROUP BY pos_product_selling.metrics 
+3

您可以評論您的答案嗎? – 2015-11-12 07:41:39