2016-02-12 103 views
0

使用這個SQL:SQL正顯示出重複記錄

SELECT p.* 
FROM shop_products p, shop_product_attributes c 
WHERE c.type = 'category' AND p.sequence = c.value AND c.value = '1' 

它顯示兩次相同的記錄。

應該顯示來自shop_products where shop_products.sequence行是shop_product_attributes.product_seqshop_product_attributes.value'1'

+2

請[編輯]你的問題,幷包括來自兩個表格的樣本數據和你試圖獲得的輸出。另外,請爲您正在使用的特定DBMS添加標籤,因爲它們之間存在語法差異。謝謝。 –

+1

根據您的設計店產品有很多屬性。並且它至少在shop_product_Attributes中出現一個類型爲c且值爲1的產品具有多於一條記錄。您可以向選擇中添加「區別」以解決問題;但如果重複記錄不應存在相同類型和值,則可能需要添加唯一約束。 – xQbert

+0

您的查詢與您的最後一個句子不匹配,你談論'product_seq',但加入'c.value' – dnoeth

回答

1
SELECT s.* 
FROM shop_products s 
where s.sequence 
in(select distinct product_seq from shop_product_attributes where type = 'category' and value=1) 
+0

類別發生了什麼? – xQbert

+0

哎呀最初錯過了。現在編輯查詢 – Chendur

+0

子選擇中的'distinct'是無用的 –

1

您的查詢不符合您的最後一句話,你說說product_seq,但加入對c.value

SELECT p.* 
FROM shop_products p JOIN shop_product_attributes c 
    ON p.sequence = c.product_seq 
WHERE c.type = 'category' 
    AND c.value = '1'