我有一个包含一定数量列和一个主键列的表(假设为OriginalKey)。我在这些列的某个子集上执行GROUP BY,并将它们存储在具有主键的临时表中(假设为GroupKey)。在稍后阶段,我可能需要获得有关这些分组中的一个或多个的更多详细信息(可以在临时表中找到),即我需要知道哪个是形成该组的原始表中的行。简单地说,我需要知道GroupKey和OriginalKey之间的映射。最好的方法是什么?提前谢谢。
示例:
Table Student(
StudentID INT PRIMARY KEY,
Level INT, --Grade/Class/Level depending on which country you are from)
HomeTown TEXT,
Gender CHAR)
INSERT INTO TempTable SELECT HomeTown, Gender, COUNT(*) AS NumStudents FROM Student GROUP BY HomeTown, Gender
稍后,我想了解所有拥有50多名男学生的城镇的详细信息,并了解每个城镇的详细信息。
答案 0 :(得分:1)
如何使用GroupKey加入2个表,你说它们是一样的?
或者如何做:
select * from OriginalTable where
GroupKey in (select GroupKey from my_temp_table)
答案 1 :(得分:0)
您需要将分组的字段存储在临时表中,以便可以加入到原始表中。例如如果你在fieldA,fieldB和fieldC上分组,你需要像:
select original.id
from original
inner join temptable on
temptable.fieldA = original.fieldA and
temptable.fieldB = original.fieldB and
temptable.fieldC = original.fieldC