mysql 多点在 多边形_mysql易错点汇总||记我在踩过的坑2

1、not in 和!=的区别,什么时候用什么?

!= 和=用来判断具体的值,而NULL需要用is或者is not判断(只能用is或is not,且like或not like不能判断)

not in的结果集中出现null则查询结果为null;

2、求奇数或者偶数怎么做?

奇数: &1 、 mod2=1

eg:mod(id,2) = 1 返回id号是奇数的id

偶数 字段=(字段>>1)<<1 、mod2=0

3、count()函数

count(*)---包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录

4、怎么查找比昨天大的数据(日期比较)

dataiff(data1,data2)=1

注意:data1-data2

5、第一次购买时间怎么求?

select id,min(时间字段) from 表名 group by id

6、窗口函数

语法:rank() over (partition by A order by B)

rank() :跳跃排名,比如有重复,下一个会跳过占用的名次

dense_rank():连续排序,相同名次并列并且下一个是连续的

row_number():没有重复值的排序

eg:

rank() over (order by 成绩 desc) as ranking

dense_rank() over (order by 成绩 desc) as dese_rank

row_number() over (order by 成绩 desc) as row_num

注:容易漏写前面的()

7、换座位(突破点在思维转变)

换座位:有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。

其中纵列的 id 是连续递增的,小美想改变相邻俩学生的座位。学生人数是奇数,则不需要改变最后一个同学的座位。

答案:

SELECT (CASE

when mod (id,2) = 1 AND id = (SELECT COUNT(*) FROM seat) THEN id

WHEN MOD(id,2) = 1 THEN id+1

ElSE id-1 END) AS id, student

FROM seat ORDER BY id;

思路分析:交换学生位次转为id的变化。id为奇数则和下一个偶数交换,id+1

8、同一张表的连续重复数据

什么是连续出现3次?某列是按顺序排列,如果乱序需要先拍顺序在构造三章一样的表

自连接(自身连接)的本质是把一张表复制出多张一模一样的表来使用

select distinct l1.Num as 重复3次

from Logs as t1,Logs as t2,Logs as t3 where

t1.Num = t2.Num and t2.Num = t3.Num and t1.Id = t2.Id -1 and t2.Id = t3.Id -1

eg:

select DATE_FORMAT(date,'%Y-%m') as month,sum(money) as money

from finance

where DATE_FORMAT(date,'%Y')=2010

group by month

order by month

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值