84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
SELECT 1 UNION SELECT null UNION SELECT !1
的含义是什么?是选择空集的意思?
业精于勤,荒于嬉;行成于思,毁于随。
先说UNION,是用于将多个不同的select语句执行的结果合并到一个结果集并返回,参考官方文档。明白了这一点,此语句可以拆分为3个不同的select语句:
SELECT 1; //直接返回字面量1的值 SELECT null; //返回null本身的“值”。NULL是mysql中的一个常量,表示“没有值”,不是空字符串或0,按道理其本身也不应该有一个具体的值,mysql只是返回这样一个字符串表示而已(总不能什么都没发生啊) SELECT !1 //逻辑非,非真即假,mysql中使用数字值1、0代表true和false,可用“SELECT TRUE, FALSE;”验证
再说这种SELECT语句的写法,可以先看下官方的说明,SELECT语句除了至少包含一条select_expr外,其它部分都可以省略,也就是说这种写法首先是合法的(SELECT can also be used to retrieve rows computed without reference to any table.)。那么有什么作用呢?简单的说,你可以理解这个时候MySQL是一个计算器,搭配MySQL提供的函数,可以用来做各种计算,执行成功后回返回最终的计算结果。举例:
mysql> select 1+1; //加法 +-----+ | 1+1 | +-----+ | 2 | +-----+ mysql> select pow(2,3); //指数运算,2的3次方 +----------+ | pow(2,3) | +----------+ | 8 | +----------+ mysql> select !0; //逻辑非 +----+ | !0 | +----+ | 1 | +----+ mysql> select 1 & 1; //按位与 +-------+ | 1 & 1 | +-------+ | 1 | +-------+ mysql> set @a=10,@b=5; //变量赋值后再运算 mysql> select @a+@b; +-------+ | @a+@b | +-------+ | 15 | +-------+ //最后题主的语句 mysql> SELECT 1 UNION SELECT null UNION SELECT !1; +------+ | 1 | +------+ | 1 | | NULL | | 0 | +------+
先说UNION,是用于将多个不同的select语句执行的结果合并到一个结果集并返回,参考官方文档。明白了这一点,此语句可以拆分为3个不同的select语句:
再说这种SELECT语句的写法,可以先看下官方的说明,SELECT语句除了至少包含一条select_expr外,其它部分都可以省略,也就是说这种写法首先是合法的(SELECT can also be used to retrieve rows computed without reference to any table.)。那么有什么作用呢?简单的说,你可以理解这个时候MySQL是一个计算器,搭配MySQL提供的函数,可以用来做各种计算,执行成功后回返回最终的计算结果。举例: