我有一个表名为Sets
的乐高:
| set_number(主键)|设置名称|其他字段(_F)|
| - -|- -|- -|
| 一百二十三|消防车|abc公司|
| 二百三十四人|星星大战|abc公司|
我有另一个表称为Parts
的乐高:
| part_number(主键)|姓名|set_number(从集合中引用set_number)|
| - -|- -|- -|
| 一个|卡车车顶|一百二十三|
| 2个|卡车车身|一百二十三|
| 三个|内墨典总督长袍|二百三十四人|
我想在Sets
表格中创建另一列,以指示特定器械包具有的唯一部件的数量。
我可以输出唯一部件的数量,如下所示:
SELECT s.set_number, COUNT(*) AS num_diff_parts
FROM Sets s, Parts p
WHERE p.set_number = s.set_number
GROUP BY s.set_number
这将输出下表(我们称之为results
):
| 设置编号|差异部分数|
| - -|- -|
| 一百二十三|2个|
| 二百三十四人|一个|
但是,我想知道是否可以将列(num_diff_parts
)作为新列放入Sets表中,而不必在每次需要此信息时都运行此查询,或者创建另一个表来包含results
表的内容。
理想情况下,Sets
表应如下所示:
| set_number(主键)|设置名称|其他字段(_F)|差异部分数|
| - -|- -|- -|- -|
| 一百二十三|消防车|abc公司|2个|
| 二百三十四人|星星大战|abc公司|一个|
我也尝试过在多个字段上执行GROUP BY
,但我认为这样做不安全,因为这些字段可能会有重复,并将抛出结果。
2条答案
按热度按时间yfjy0ee71#
| 设置编号|设置名称|其他字段(_F)|差异部分数|
| - -|- -|- -|- -|
| 一百二十三|消防车|abc公司|2个|
| 二百三十四人|星星大战|abc公司|一个|
我们也可以在加入表之前先
count()
。Fiddle
wribegjk2#
但是,我想知道是否可以将列(num_diff_parts)作为新列放入Sets表中,而不必在每次需要此信息时都运行此查询
我建议使用视图;使用这种技术,信息总是可用的,并且您不需要自己使其保持最新。
在MySQL中,相关子查询可以方便地高效计算每套零件的数量: