初期表はこんな感じ
id name count
1 chocolate 5
1 cheeze 3
2 pepperoni 2
2 potatoes 1
2 cheese 7
3 dirty sock 2
私が望むのは、異なる ID を持つが同じ名前を持つ行を選択することです。言い換えれば、より多くのレシピで使用される材料
初期表はこんな感じ
id name count
1 chocolate 5
1 cheeze 3
2 pepperoni 2
2 potatoes 1
2 cheese 7
3 dirty sock 2
私が望むのは、異なる ID を持つが同じ名前を持つ行を選択することです。言い換えれば、より多くのレシピで使用される材料
私の理解が正しければ、重複を名前で選択したかったのです。cheese
あなたの例では、同じスペルを使用した場合にそうなるはずでした(しかし、そうではありませんでした-それは間違いですか?)。
私がそれを正しく理解したと仮定すると、これはうまくいくはずです( SQLFiddle DEMO ):
SELECT * FROM mytable
WHERE [name] IN (
SELECT [name]
FROM mytable
GROUP BY [name]
HAVING count(*) > 1
)
最初に一意の 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;
name, count(id) を used_in_recipes として名前で成分グループから選択します。
本当に別の ID を確認する必要がありますか? レシピで同じ材料を繰り返す必要があるのはなぜですか?
それらを名前でグループ化しましょう。