0

初期表はこんな感じ

id  name        count
1   chocolate   5 
1   cheeze      3 
2   pepperoni   2
2   potatoes    1
2   cheese      7
3   dirty sock  2

私が望むのは、異なる ID を持つが同じ名前を持つ行を選択することです。言い換えれば、より多くのレシピで使用される材料

4

4 に答える 4

2

私の理解が正しければ、重複を名前で選択したかったのです。cheeseあなたの例では、同じスペルを使用した場合にそうなるはずでした(しかし、そうではありませんでした-それは間違いですか?)。

私がそれを正しく理解したと仮定すると、これはうまくいくはずです( SQLFiddle DEMO ):

SELECT * FROM mytable
WHERE [name] IN (
    SELECT [name]
    FROM mytable
    GROUP BY [name]
    HAVING count(*) > 1
)
于 2013-02-20T05:10:22.723 に答える
1

最初に一意の ID と名前のペアをサブクエリとして取得し、次に結果を名前で集計します。

select name, COUNT(*) as count
from (
    select distinct id, name
    from mytable) as sq
group by name
于 2013-02-20T04:56:36.213 に答える
0

上記のコメントに投稿しようとしましたが、フォーマットがうまくいきませんでした。これも同様に機能します:

SELECT t1.id FROM myTable t1, myTable t2
    WHERE t1.name LIKE t2.name AND t1.id != t2.id;
于 2013-02-20T05:00:15.783 に答える
0

name, count(id) を used_in_recipes として名前で成分グループから選択します。

本当に別の ID を確認する必要がありますか? レシピで同じ材料を繰り返す必要があるのはなぜですか?

それらを名前でグループ化しましょう。

于 2013-02-20T05:23:52.743 に答える