如何用一条SQL语句查询某人所在名次,注意,是名次。 mysql

如何用一条SQL语句查询某人所在名次,注意,是名次。 mysql,第1张

1、首先新建一个test数据库,在数据库里创建一张data数据表,在表内插入5条测试数据。

2、新建一个php文件,命名为test.php,用于讲解使用sql查询数据表前三天的数据。

3、在test.php文件内,使用header()方法设置文件执行的编码为utf8,避免输出中文时产生乱码。

4、在test.php文件内,使用数据库账号、密码、名称,利用mysqli创建数据库连接,并使用set_charset()方法设置获得数据的编码为utf8,同时,使用if语句判断连接数据库是否成功,如果连接不成功,输出错误信息。

5、在test.php文件内,编写sql语句,使用TO_DAYS()分别获得当前的天数和数据表ctime字段数据的天数,两者之差小于3天,即前三天,以此为条件查询data数据表的数据,使用query()执行sql语句,同时使用fetch_all()方法将获得的数据资源转换为二维数组。

6、在test.php文件内,使用foreach方法遍历上一步获得的二维数组,输出数据的id和姓名。

7、最后在浏览器运行test.php文件,查看程序执行的结果,可见,成功从数据库获得前三天的数据。

为什么说是臆测呢,因为我猜这并不是问很极端的情况。

详细说来,拆解每个查询消耗的时间,并不是每个步骤都与行数有关。

查1行,查10行,网络通讯都是占大部分时间,所以是10倍。

但是,如果你一次查10w行,并不会比10w次1行快10w倍,因为大数据量查询本来就慢。

延伸一下,以前我们做过一个优化,又来用这个case连续讲了4-5年。

这是一个UPDATE table SET col = col + N WHERE key = ?的查询,大概有5k QPS左右,跑不动。

改成了UPDATE table SET col = col + 1 WHERE key IN (?, ?, ?..... )的样子,数据库CPU从40%降到1%。

这个改变没有改变任何索引使用和网络传输,是不常见的,解析SQL瓶颈。

写这个例子,是要说,优化要根据具体情况分析,数据量和使用情况都会影响结论。

在MYSQL中有很多的时间函数都能实现这样的功能,不能直接小于的用法,可以选择减法的得结果的方式去获得结果,举例,

select * from 表名WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 6

dete_col : 时间列名(筛选条件列)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8608013.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存