0

私は次のデータベースとクエリを持っています:

CREATE TABLE table1
    (`group` int, `points` int)
;

INSERT INTO table1
    (`group`, `points`)
VALUES
    (1, 115),
    (2, 125),
    (1, 105),
    (2, 000),
    (3, 005),
    (1, 020),
    (2, 005),
    (1, 010),
    (2, 005),
    (3, 030),
    (2, 000),
    (2, 055),
    (2, 100),
    (1, 020),
    (3, 055),
    (3, 055),
    (1, 005),
    (1, 010),
    (2, 025),
    (1, 035),
    (2, 100),
    (1, 120),
    (3, 140),
    (3, 105),
    (1, 065),
    (3, 025),
    (4, 015),
    (1, 005),
    (2, 010),
    (1, 130),
    (4, 040),
    (1, 055),
    (4, 020),
    (4, 060),
    (3, 010),
    (3, 105),
    (4, 125),
    (3, 000),
    (2, 005),
    (2, 010),
    (1, 115)
;

CREATE TABLE soruce1
    (`group` int)
;

INSERT INTO soruce1
    (`group`)
VALUES
    (1),
    (2),
    (3),
    (4)
;

  select s1.`group`, SUM(t1.`points`) FROM table1 as t1
    inner join soruce1 as s1
      on s1.`group` = t1.`group`
  where s1.`group` = 1
  GROUP BY s1.`group`
  ORDER BY SUM(t1.`points`) ASC;

データベースとクエリ(SQL Fiddle Link)

Whileループを使用せずに、source1のすべての値をwhere句でループするにはどうすればよいですか。グループ1のクエリの実行が終了すると、グループ2に移動し、テーブルの最後まで続きます。当然、selectはInsertで使用されます

これはデータのサンプルにすぎません。source1には約5000のエントリがあります

4

2 に答える 2

2

WHERE行-- where s1.group = 1をコメントアウトすると、4行になりますか?それはあなたが意味することですか?

于 2013-02-25T23:49:02.217 に答える
1

where句を削除すると、クエリによって各グループの合計が集計されます。

SQLフィドル

 select s1.[group], SUM(t1.points) FROM table1 as t1
    inner join soruce1 as s1
      on s1.[group] = t1.[group]
  --where s1.[group] = 1
  GROUP BY s1.[group]
  ORDER BY SUM(t1.points) ASC;
于 2013-02-25T23:50:14.213 に答える