所以我的问题是我不确定为什么这个问题的答案是否定的。
Project(pid,name,startYear)
Developer(did,name,hireYear)
WorksOn(pid,did,year)
作为模式。
我知道在Q7中,它将选择所有x.did以及年份大于2010的计数,然后按X.did进行分组。 对于Q8,应该选择所有具有x.did和year> 2010的x.did的计数以及x.did。
我不完全理解为什么这些查询会有所不同,希望您能有所帮助!
答案 0 :(得分:1)
第一个只选择年份大于2010的行。第二个只检索所有行,无论年份如何。对于年份小于或等于2010的所有行,计数将为0。首先,GROUP BY
的作用是,结果did
是唯一的。在第二个中,情况不一定如此。如果did
在表中也不唯一,那么结果也不是唯一。
答案 1 :(得分:1)
它们根本不相似。
where
条件的行。X.did
上有重复的行也是如此。第一个只为X.did
选择一行。在非常狭窄的情况下,两者返回相同的结果集。您应该考虑哪些数据将使之成为可能。