初始表是這樣的SQL選擇具有相同的字段值的行
id name count
1 chocolate 5
1 cheeze 3
2 pepperoni 2
2 potatoes 1
2 cheese 7
3 dirty sock 2
我想要的是選擇具有不同的ID,但具有相同的名稱的行。換句話說,將在更多食譜中使用的成分
初始表是這樣的SQL選擇具有相同的字段值的行
id name count
1 chocolate 5
1 cheeze 3
2 pepperoni 2
2 potatoes 1
2 cheese 7
3 dirty sock 2
我想要的是選擇具有不同的ID,但具有相同的名稱的行。換句話說,將在更多食譜中使用的成分
首先將您的唯一ID,名稱對作爲子查詢,然後按名稱彙總結果。
select name, COUNT(*) as count
from (
select distinct id, name
from mytable) as sq
group by name
或者, SELECT t1.id FROM myTable t1,myTable t2 WHERE t1.name LIKE t2.name AND t1.id!= t2.id; – user2089674 2013-02-20 04:59:44
本來是甜的,但配方表沒有列出的成分 – morgred 2013-02-20 05:15:43
這很奇怪,但是這個被接受的答案不同意這個問題,甚至沒有接近:[SQLFiddle](http://www.sqlfiddle.com/#! 3/506d8/8) - 它顯示整體使用過的成分。有問題,你要求重複。 – mvp 2013-02-20 05:21:43
如果我理解正確,你想按名稱選擇重複。在你的例子中,如果你使用了相同的拼寫,應該是cheese
(但你沒有 - 是否錯誤?)。
假設我是正確的,這應該工作(SQLFiddle DEMO):
SELECT * FROM mytable
WHERE [name] IN (
SELECT [name]
FROM mytable
GROUP BY [name]
HAVING count(*) > 1
)
是的,你說得對 – morgred 2013-02-20 05:17:14
選擇的名稱,數(ID)按名稱 組used_in_recipes從成分 ;
我們真的需要檢查一個不同的ID嗎? 爲什麼我需要在配方中重複相同的成分?
讓我們按名稱對它們進行分組。
那麼只需按名稱選擇?我一定是誤解了這個問題。在你的例子中, – 2013-02-20 04:56:44
所有名稱都不相同,即使是'cheese'!='cheeze'。你能舉出更詳細的例子嗎? – mvp 2013-02-20 05:04:30