首先, 最外面那层
SELECT * FROM `table`
WHERE id >= ...
ORDER BY id LIMIT 1
是查询 `table` 表, 要求 id 大于 那个 ...
然后 ORDER BY id , 是要求查询结果,按照 id 排序。 从小到大。
LIMIT 1 是 只返回查询结果的第一行。
------
如果上面的看明白了,那么下面开始说说子查询里面的处理
(SELECT
floor( RAND() * (
(SELECT MAX(id) FROM `table`) -
(SELECT MIN(id) FROM `table`)
) + (SELECT MIN(id) FROM `table`)
)
)
floor 是 向下取整
例子:
mysql>SELECT FLOOR(-23.5), FLOOR(23.5)
+--------------+-------------+
| FLOOR(-23.5) | FLOOR(23.5) |
+--------------+-------------+
| -24 | 23 |
+--------------+-------------+
1 row in set (0.00 sec)
RAND 是随机数
RAND()
返回一个随机浮点值 v ,范围在 0 到1 之间 (即, 其范围为 0 ≤ v ≤ 1.0)。
MAX(id) 与 MIN(id) 是 查询 表里面 最大的 id 与 最小的 id.
逻辑看下来, sql 的功能, 有点像是, 从 `table` 表, 随机获取一条数据。
其实没必要这么麻烦。
简单的写:
SELECT * FROM `table`
ORDER BY RAND()
LIMIT 1
就可以实现了。
CURDATE() 函数返回当前的日期DATE_SUB() 函数从日期减去指定的时间间隔
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据 %w周的天 (0=星期日, 6=星期六)
DATE_ADD() 函数向日期添加指定的时间间隔 INTERVAL 6 DAY就是加6天
也就是说这个查询的是上周一到上周日的时间段
grant process,super,replication client on *.* to ¨cacti¨@¨10.0.0.116¨ identified by ¨cacti¨这是个权限赋值的语法
process,super,replication client 这三个分别是权限名:
process:具有查看当前运行的sql的权限 ,以及explain执行计划
super:杀死mysql中连接的进程,设置全局变量,重置主从配置的权限
replication client :指定主从权限
整句sql的意思就是说,把以上三个权限赋给cacti账户,但是只有是10.0.0.116上的客户端通过cacti账户连接才有这些权限,作用域是全局,连接密码也是cacti(identified by ¨cacti),这里是设置密码
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)