1.子查询中使用ANY,代表任何值。在比较运算符中使用。比较运算符有哪些呢?
=,>,<,<=,>=,<>,!=等。和ANY一样还有IN,SOME等关键字。
用法很讲究,详情可浏览官方文档
DELETE FROM t1
WHERE s11 > ANY
(SELECT COUNT(*) /* no hint */ FROM t2
WHERE NOT EXISTS
(SELECT * FROM t3
WHERE ROW(5*t2.s1,77)=
(SELECT 50,11*s1 FROM t4 UNION SELECT 50,77 FROM
(SELECT * FROM t5) AS t5)));
SELECT * FROM (SELECT 5 AS X,4 AS Y FROM DUAL
UNION SELECT 3,3 FROM DUAL
UNION SELECT NULL,NULL FROM DUAL) t3 WHERE
t3.X > ANY
(SELECT COUNT(*) FROM ((SELECT 3 FROM DUAL )
UNION (SELECT * FROM (SELECT 2 FROM DUAL) AS t5)) t4)
第二个SQL中,where条件中使用alias x做条件查询,语法上注意一点,不用子查询,一条sql的字段 alias后,where语句中直接使用不识别alias。
2.sleep函数-线程睡眠,mysql的sleep和java中Thread.sleep方法一样支持睡眠操作。
单位是秒。mysql官文
SELECT SLEEP(10);
SELECT NOW(),SLEEP(5),NOW();
SELECT SYSDATE(), SLEEP(2), SYSDATE();
3.日期类型函数,例如 date(),date_add,date_sub等。
mysql的日期类型操作的系统函数数量庞大,说明日期类型操作重要,经常用到。还有其他日期相关的系统函数,例如字符串转化到日期,日期格式化等等。日期类型也很多。例如date,datetime,timestamp等。
mysql官方文档
SELECT CURRENT_TIME;
SELECT DATE(STR_TO_DATE('2019-10-21 10:21:45','%Y-%m-%d %H:%i:%s'));
SELECT TIME(STR_TO_DATE('2019-10-21 10:21:45','%Y-%m-%d %H:%i:%s'));
SELECT LAST_DAY('2003-02-05'); #当月的最后一个天
4.mysql的UUID和UUID_SHORT函数
UUID_SHORT将返回全局唯一的64位正整数。和uuid()是不同的。uuid()字符串格式的128位的全剧唯一id。
如果以下条件成立,则uuid_short()的值保证是唯一的:
The server_id value of the current server is between 0 and 255 and is unique among your set of master and slave servers
运行mysql当前服务器在集群中的server-id是0到255.
You do not set back the system time for your server host between mysqld restarts
mysqld启动后,不能设置系统时间,当前系统时间设置为过去时间
You invoke UUID_SHORT() on average fewer than 16 million times per second between mysqld restarts
mysqld启动后,uuid_short函数不能运行小于每秒1600万。
uuid_short()返回值是这样构造的
(server_id & 255) << 56
+ (server_startup_time_in_seconds << 24)
+ incremented_variable++;
mysql> SELECT UUID_SHORT();
-> 92395783831158784
备注
UUID_SHORT() does not work with statement-based replication.
uuid_short()不适用于基于语句的复制。