1

サブクエリに慣れるために、サブクエリの作成をいじっています。ID がジャンクション テーブルに X 回表示される場合、その ID 番号とコストを取得しようとしています。私はもう試した

select id, charges from myTable
where id in
(
    select id from jxnTable
having (count(jxn.id> 10))
group by jxn.id

これは私にエラーを与えますjxn.id is invalid in the select list because it is not contained in either an aggregate function of a group by clause.

4

2 に答える 2

2

あなたは、あなたの節GROUP BYの奇妙なことに加えて、サブクエリ内に属しています。()HAVING

select id, charges from myTable
where id in
(
    select id from jxnTable
    GROUP BY id
    having (count(id>) 10)
)

これは、句でJOINはなく、サブクエリに対してを使用して実行することもできます。これは、より高速な場合があります。IN()

SELECT m.id, charges
FROM myTable M
  INNER JOIN (
    SELECT id FROM jxnTable
    GROUP BY id
    HAVING COUNT(id) > 10
  ) cnt  ON m.id = cnt.id
于 2012-05-17T18:27:00.877 に答える
2

3つのエラー:

  • GROUP BYとHAVINGは同じクエリの一部である必要があり、GROUPBYは対応するHAVINGの前にテキストで入力する必要があります。
  • COUNT式を囲む括弧が正しくありません。
  • と呼ばれるテーブルまたはエイリアスがありませんjxn

代わりにこれを試してください:

SELECT id, charges
FROM myTable
WHERE id IN
(
    SELECT id
    FROM jxnTable
    GROUP BY id
    HAVING COUNT(id) > 10
)
于 2012-05-17T18:27:13.877 に答える