在您的 where 子句中使用 Select Min 和 MAX

Use a Select Min and MAx in your where clause

我使用了一些 select 语句来驱动结果,但是我有 2 个 select 语句,其中 returns 最短约会时间和最长约会时间。但是,如果最小值和最大值相同,我想从我的 where 子句中删除。

SELECT
  APPOINTMENTS.userid,
  users.LOCATIONID,
  MIN(APPOINTMENTTIME) AS mintime,
  MAX(APPOINTMENTTIME) AS maxtime

FROM appointments
WHERE APPOINTMENTDATE BETWEEN '2017-01-07' AND '2017-01-07'
AND NOT mintime <> maxtime
GROUP BY appointments.USERID,
         users.LOCATIONID,
         appointments.APPOINTMENTDATE

我收到错误 Mintime is not valid。

我确定我需要将它保存在一个新的 sub select 但不确定..

干杯

请尝试

select   
APPOINTMENTS.userid, 
users.LOCATIONID,
min(APPOINTMENTTIME) as mintime, 
max(APPOINTMENTTIME) as maxtime

from appointments
where 
APPOINTMENTDATE between '2017-01-07' and '2017-01-07'

group by 
appointments.USERID,users.LOCATIONID,
appointments.APPOINTMENTDATE
having min(APPOINTMENTTIME)  <> max(APPOINTMENTTIME)

根据 Sql 服务器

试试这个
        SELECT * FROM (
        select   
        APPOINTMENTS.userid, 
        users.LOCATIONID,
        min(APPOINTMENTTIME) as mintime, 
        max(APPOINTMENTTIME) as maxtime
        from appointments
        where 
        APPOINTMENTDATE between '2017-01-07' and '2017-01-08'

        group by 
        appointments.USERID,users.LOCATIONID,
        appointments.APPOINTMENTDATE
        )as t WHERE  mintime <> maxtime

HAVING clause用于聚合函数,例如

HAVING NOT MIN(APPOINTMENTTIME) <> MAX(APPOINTMENTTIME)

不过我不知道你为什么在谓词中使用双重否定,根据你的描述你只需要 <>

HAVING MIN(APPOINTMENTTIME) <> MAX(APPOINTMENTTIME)