网址是:sqlzoo.net。做了前三章,简单的题还是遇坑了,记录总结一下。
- SELECT basics 略
2. SELECT IN SELECT
a. ROUND函数
ROUND函数有2个参数:ROUND(你需要修改的数字,保留的小数点位数)
默认是不显示小数点,正数是保留的小数点的位数,负数是向左进行保留
ROUND (10/3,2) = 3.33
ROUND (10/3) = 3
ROUND (12345,-2) = 12300
b. 同时选择
只选一个可以用“|”来分隔,但同时选择就要每个条件写一个语句了,再用and连在一起。
SELECT name FROM world
WHERE name like '%a%'
AND name like '%e%'
AND name NOT LIKE '% %'
3. SELECT from Nobel
a. 输入单引号,可以用两个单引号'',也可以用反斜杠。
SELECT * FROM nobel WHERE winner='EUGENE O\'NEILL'
SELECT * FROM nobel WHERE winner='EUGENE O''NEILL'
b. 排序
这两道题都讲到了排序,sql中默认是升序,所以asc不用写,降序desc要写。
另外一个是用IF和IN来排序特定分类。单个条件用IF,范围用IN
例:将snake放在前面
if (species='snake',1,0),DESC,species;
这句话的意思是,对species进行排序的同时,附加一个隐藏属性,可以是1或者0。
因此,在对species排序的时候,优先级是判断species是否为snake,如果是,返回1,如果不是,返回0。
如果想把snake的这一行放在查询结果尾部,那就是
SELECT * FROM pet ORDER BY if(species='snake',1,0) species;
第一步是查询species的隐藏属性,因为species=snake的返回值是1,所以进行升序排列时,就被排在了最后
上面是满足单个条件,如果需要用到一个范围,则可以使用IN语句,就是上面例图这样。