データベースの中には、これについてもっと良いものと悪いものがあります。クエリーは非特異的であるため、結果も同様に非特異的です。データベースがクエリを許可する場合は、各グループから1つのレコードが返され、どちらのレコードも気にしません。他のデータベースはより具体的で、グループからどの値を指定する必要があります。彼らは、あなたが非特定の結果を持つクエリを書くことはできません。
あなたは集計せずに選択することができる唯一の値はgroup by
句でのものです:あなたはすべての場合
:
select foo.id, count(bar.id)
from foo inner join bar on foo.id = bar.foo_id
group by foo.id
あなたは他の値を取得するために凝集体を使用することができます値をfooテーブルから取得する場合は、group by
句にすべての値を入れることができます(正しい結果が得られた場合)。
select foo.id, foo.price, foo.name, foo.address, count(bar.id)
from foo inner join bar on foo.id = bar.foo_id
group by foo.id, foo.price, foo.name, foo.address
それとも、あなたはサブクエリでテーブルを結合することができます。
select foo.id, foo.price, foo.name, foo.address, sub.bar_count
from foo
inner join (
select foo.id, bar_count = count(bar.id)
from foo inner join bar on foo.id = bar.foo_id
group by foo.id
) sub on sub.id = foo.id
ステートメントにgroup by句はありません...あなたはそれを忘れましたか? –
mysqlがそれを受け入れるからといってそれが良いアイデアや正しい方法であるとは限りません。 – nos