2014-02-11 76 views
1

我需要從我的數據庫中刪除某些特定的副本。我創建了發現我需要記錄的查詢,但在運行它作爲一個子查詢我得到的錯誤「operand should contain 1 column」的時候,我不知道如何獲得我需要的,而只有選擇單個列的特定信息。刪除查詢給「操作數應包含1列」錯誤

查詢是:

delete 
from products 
where id in (SELECT * 
FROM products 
GROUP BY part_number 
HAVING count(*) > 1 and manufacturer_id="4146" 
) 

任何想法,我怎麼能得到這個工作?

+0

將'select *'替換爲'select id_column'。請不要把數字放在雙引號中。 –

+0

感謝您的提示。不幸的是,這給出了響應:錯誤代碼:1093.您無法在FROM子句 – nerdyone1977

回答

0

在你的子查詢,你需要選擇一個ID列

delete 
from products 
where id IN (SELECT id 
FROM products 
WHERE manufacturer_id="4146" 
GROUP BY part_number 
HAVING count(*) > 1 
) 

同樣來自同一個表中獲取ID會給你另一個錯誤不能指定目標表您需要提供新的別名,你的子查詢

delete 
from products 
where id IN 
(SELECT t.id FROM (
(SELECT id 
FROM products 
WHERE manufacturer_id="4146" 
GROUP BY part_number 
HAVING count(*) > 1) t 
) 
+0

中指定目標表'產品'進行更新。這給出錯誤:錯誤代碼:1054.'having子句'中的未知列'manufacturer_id' – nerdyone1977

+0

@ user116694看到我更新的查詢 –

+0

感謝您的幫助@M哈立德朱奈德。這裏的問題是子查詢拉空集。產品表中不會有任何匹配的ID。也許如果我用簡單的英語寫出我想要完成的東西。首先,我想獲得所有零件數超過1的零件,我只想刪除那些製造商ID爲4146的零件。所以我會寫這兩個查詢,例如:'從產品中選擇part_number COUNT(PART_NUMBER)> 1'和一套'選擇PART_NUMBER其中製造商ID ='4146''但如何將它們捆綁成一個刪除查詢? – nerdyone1977

相關問題