操作者之间 年龄 年龄组之间
Between operator Age Between Age Group
我有两个table
Table一个
Age
Students
5
2
6
5
4
1
均值
2 名学生 5 岁
5 名学生 6 岁和
1 学生年龄为 4
Table两个
GroupName
MinAge
MaxAge
StudentsCount
GroupA
3
5
0
GroupB
5
7
0
均值
2 教练组在那里。
第一个是GroupA,第二个是GroupB
GroupA 年龄段介于 3 至 5 岁之间
GroupB 年龄组 5 至 7 岁
在这种情况下,A 组有 3 个学生,B 组有 5 个学生。
我想更新 table2 中的 StudentsCount 列,例如 GroupA = 3 和 GroupB = 5
我正在使用 between 运算符,但结果是错误的。
update a
set a.StudentsCount = b.Students
from Table2 a, Table1 b
where b.age between a.MinAge and a.MaxAge
当我使用上面的查询 StudentsCount 字段时,两条记录都更新为 2。已经尝试过 >= 和 <= 但没有运气。任何人都知道简单的 table 查询请更新。谢谢。
您使用了错误的方法。不需要加入。你想更新表 2?然后UPDATE table2
。你想更新它的 StudentsCount?然后SET StudentsCount = ...
。你想要学生人数的总和?然后SUM(Students)
.
UPDATE table2
SET studentscount =
(
SELECT COALESCE(SUM(students), 0)
FROM table1
WHERE table1.age BETWEEN table2.minage AND table2.maxage
);
两条备注:
- 正如其他人所提到的,在您的样本数据中,您对 5 岁的学生进行了两次计数,一次在 3-5 范围内,一次在 5-7 范围内。您可能希望范围为 3-5 和 6-7 或 3-4 和 5-7。
- 我们避免数据库中的冗余。您始终可以临时计算学生人数。您甚至可以为此创建一个视图。冗余存储总和通常不是一个好主意。
我有两个table
Table一个
Age | Students |
---|---|
5 | 2 |
6 | 5 |
4 | 1 |
均值 2 名学生 5 岁 5 名学生 6 岁和 1 学生年龄为 4
Table两个
GroupName | MinAge | MaxAge | StudentsCount |
---|---|---|---|
GroupA | 3 | 5 | 0 |
GroupB | 5 | 7 | 0 |
均值 2 教练组在那里。 第一个是GroupA,第二个是GroupB GroupA 年龄段介于 3 至 5 岁之间 GroupB 年龄组 5 至 7 岁 在这种情况下,A 组有 3 个学生,B 组有 5 个学生。
我想更新 table2 中的 StudentsCount 列,例如 GroupA = 3 和 GroupB = 5
我正在使用 between 运算符,但结果是错误的。
update a
set a.StudentsCount = b.Students
from Table2 a, Table1 b
where b.age between a.MinAge and a.MaxAge
当我使用上面的查询 StudentsCount 字段时,两条记录都更新为 2。已经尝试过 >= 和 <= 但没有运气。任何人都知道简单的 table 查询请更新。谢谢。
您使用了错误的方法。不需要加入。你想更新表 2?然后UPDATE table2
。你想更新它的 StudentsCount?然后SET StudentsCount = ...
。你想要学生人数的总和?然后SUM(Students)
.
UPDATE table2
SET studentscount =
(
SELECT COALESCE(SUM(students), 0)
FROM table1
WHERE table1.age BETWEEN table2.minage AND table2.maxage
);
两条备注:
- 正如其他人所提到的,在您的样本数据中,您对 5 岁的学生进行了两次计数,一次在 3-5 范围内,一次在 5-7 范围内。您可能希望范围为 3-5 和 6-7 或 3-4 和 5-7。
- 我们避免数据库中的冗余。您始终可以临时计算学生人数。您甚至可以为此创建一个视图。冗余存储总和通常不是一个好主意。