想知道是否有人可以解释这两个查询之间的区别,并告知为什么一个有效而另一个无效。
这个有效。给我两条不同的 GantryRtn 值及其对应的 SSD 值的记录。
SELECT DISTINCT GantryRtn as Gantry, ROUND(Field.SSD,1) as SSD
FROM Field, PlanSetup, Course, Patient, Radiation
WHERE Field.RadiationSer=Radiation.RadiationSer
AND Radiation.PlanSetupSer=PlanSetup.PlanSetupSer
AND PlanSetup.CourseSer=Course.CourseSer
AND Course.PatientSer=Patient.PatientSer
AND Patient.PatientId='ZZZ456'
AND PlanSetup.PlanSetupId='F T1 R CHEST'
但是,字段表中有一个外键链接到另一个表的主键,该表包含每个字段的纯文本名称。我还想通过提取此外键RadiationSer来提取该名称(如果必须,在单独的查询中) 。但是,一旦我将RadiationSer放入查询中,我就会丢失 DISTINCT 结果。
SELECT DISTINCT GantryRtn as Gantry, ROUND(Field.SSD,1) as SSD, Field.RadiationSer
FROM Field, PlanSetup, Course, Patient, Radiation
WHERE Field.RadiationSer=Radiation.RadiationSer
AND Radiation.PlanSetupSer=PlanSetup.PlanSetupSer
AND PlanSetup.CourseSer=Course.CourseSer
AND Course.PatientSer=Patient.PatientSer
AND Patient.PatientId='ZZZ456'
AND PlanSetup.PlanSetupId='F T1 R CHEST'
第二个查询为我提供了 7 条具有非不同GantryRtn值的记录。
为什么会这样??
我已经使用 GROUP BY 进行了调查,但这会减慢查询速度,并且似乎会将所有 GantryRtn 从数据库中拉出(100 条记录)。
谢谢格雷格