67,732
社区成员
发帖
与我相关
我的任务
分享
select a.ID
from weather as a cross join weather as b
#设置连表查询
on datediff(a.recordDate, b.recordDate) = 1
#设置查询条件
where a.Temperature > b.Temperature;
#筛选条件
乍一看此题并不难,但细想的话需要解决两个问题,
对日期的比较相对简单,这里介绍一个函数:
得到的结果是日期1与日期2相差的天数。
如果日期1比日期2大,结果为正;如果日期1比日期2小,结果为负。
例:select datediff('2020-2-2','2020-2-1') as a,返回值为1
和上面diffdate的正、负号规则刚好相反。
日期1大于日期2,结果为负,日期1小于日期2,结果为正。
在“时间类型”的参数位置,通过添加“day”, “hour”, “second”等关键词,来规定计算天数差、小时数差、还是分钟数差。
使用交叉联结会将两个表中所有的数据两两组合。
这里我们只需要让“两个”表都是日期表即可,并设置查询条件为两者相差一天
SELECT
s.name
FROM
salesperson s
WHERE
s.sales_id NOT IN (SELECT
o.sales_id
FROM
orders o
LEFT JOIN
company c ON o.com_id = c.com_id
WHERE
c.name = 'RED')
;
总共有三个表,先用总表和公司表联合查询,将含有“RED”的数据行找出来,之后再将员工表中的那个id去除即可