SQL中是否需要“ORDER BY”

时间:2018-02-05 13:29:47

标签: sql

所以我正在看这个sql

SELECT COUNT(1)
FROM
  (SELECT  *
  FROM EVENT
  WHERE  END_DATE  IS NULL
  ORDER BY
    CASE EVENT_TYPE
      WHEN 'E'
      THEN 1
      WHEN 'C'
      THEN 2
      ELSE 3
    END,
    START_DATE ASC
  ) a

我想知道如果我们将其改为

,每次都会给出相同的结果
SELECT COUNT(1)
FROM
  (SELECT  *
  FROM EVENT
  WHERE  END_DATE  IS NULL
  ) a

因为我只想要计算为什么要使用订单?

4 个答案:

答案 0 :(得分:3)

你的假设是正确的。如果您只想查找子查询中的记录总数,那么排序无关紧要。但请注意,您在第二个版本中甚至不需要子查询:

SELECT COUNT(*)
FROM EVENT
WHERE END_DATE IS NULL;

答案 1 :(得分:2)

ORDER BY对您的情况没有任何影响。

你可以缩短它:

SELECT COUNT(*)
FROM EVENT
WHERE END_DATE IS NULL

答案 2 :(得分:2)

您想要的只是COUNT 不依赖订购。您可以进一步将查询简化为

SELECT COUNT(1)
FROM EVENT
WHERE END_DATE IS NULL

答案 3 :(得分:2)

由于您使用count函数,因此无需添加order,因此result将始终返回相同的值。