Mysql查询模型:
把列看成变量,把where后面看成PHP中的if(exp) 表达式 哪一行能让exp为真,哪一行就能取出来
还有列既然可以看作是变量,变量之间可以进行与运算。
以前写sql语句就是写的多了以后,发现也没有什么,没有理解到可以把列当成变量,来运算,看燕十八老师的视频是长见识了,看来自己还是太菜了。
下面有一道题目可以帮助我们更好的理解列是变量这一问题
把num值处于[20,29]之间,改为20 num值处于[30,39]之间的,改为30 mian表 +------+ | num | +------+ | 3 | | 12 | | 15 | | 25 | | 23 | | 29 | | 34 | | 37 | | 32 | | 45 | | 48 | | 52 | +------+
create table mian
(
num int
);
insert into mian
(
num int
);
values
(3),(12),(15),(25),(23),(29),(34),(37),(32),(45),(48),(52);
一开始:我是这样写的
update mian set num=20
where
num between 20 and 29;
update mian set num=30
where
num between 30 and 39;
这是因为我没有真正理解列是变量这一概念
其实我们可以把(num)/10 去整然后*10,floor为向下取整函数
具体如下 :
update mian set num=floor(num/10)*10
where
num
between 20 and 39;
mysql中还许多函数,这个可以参考手册
FLOOR(x) 返回小于x的最大整数值
MOD(x,y) 返回x/y的模(余数)
CONCAT(s1,s2...,sn)将s1,s2...,sn连接成字符串