假设 value 是一个整数,并且以下查询是有效的:
SELECT blah
FROM table
WHERE attribute = value
尽管 MAX(expression) 返回 int 类型,但以下语句是无效的:
SELECT blah
FROM table
WHERE attribute = MAX(expression)
当然可以使用子查询来实现所需的效果,但我的问题是为什么SQL被设计成这样-是否有某种原因导致不允许这种情况?那些从编程语言转过来的学生,他们总是可以通过函数调用替换数据类型来解决问题,会觉得这个问题很困惑。是否有一种解释可以给他们而不仅仅是说“就是这样”?
max()
是一个聚合函数,这使它与标量函数不同(后者可用于where
子句中)。由于聚合需要操作“行”,因此您无法将其应用于(标量)表达式。 - user330315max(expression)
中,您正在考虑哪种表达式? - Conrad Frix