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)

如何使用 where 子句循环遍历 source1 中的所有值,而不必使用 While 循环,因此当它完成对组 1 的查询时,它将移动到组 2,依此类推,直到表的末尾,自然,选择将用于插入

这只是数据的一个样本,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 回答