📅 2022-03-21 13:07
👁️ 376
💬 0
MySQL 间隔取数据
背景介绍:系统中存在一张坐标表,存取一段路线桩号的具体坐标,坐标点多且密,如果全部返回给前端,后端接口响应很慢,为了解决这个问题,准备在查询数据库的时候,间隔取出一些坐标点即可,如每十个桩号取一个即可
数据表如下:

具体实现:
SELECT
n,id,longitude,latitude
FROM
(
SELECT
@n:= @n + 1 AS n,
a.*
FROM
( SELECT * FROM biz_project_coordinates WHERE hidden = 0 AND geometry_id = "8ae4240e7c83a953017c83e07c043a91" ORDER BY origin_pile ) a,
( SELECT @n := 0 ) b
) c
WHERE
c.n % 10 = 1
OR c.n = 1
结果:

阅读更多
📅 2022-03-21 12:45
👁️ 2208
💬 0
MySql 分组 获取每组最新的一条数据
前提:学生成绩表如下

问题描述:获取每门科目成绩最高的记录,即取出 语文成绩最高(id=3)、数学成绩最高(id=4)的两条数据
解决方案:先按成绩(grade)降序,在进行分组
注意 :DISTINCT(s.id) tid 必需
SELECT *
FROM (
SELECT DISTINCT(s.id) tid, s.* FROM `student` s
ORDER BY s.grade DESC
) t
GROUP BY t.`subject`
结果:

阅读更多
📅 2021-03-05 14:49
👁️ 684
💬 0
Idea 连接MySQL数据库
注意:
- 需要导入jar包,mysql-connector-java-8.0.16.jar
- mysql8.0及以上 使用的驱动 drive=com.mysql.cj.jdbc.Driver;
- url="jdbc:mysql://localhost:3306/(设计的数据库名称)?useSSL=false&serverTimezone=Asia/Shanghai"
import java.sql.*;
/**
* @author xiaoming
* @create 2021-03-05 12:11
*/
public class MySqlTest {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// MySQL8.0及以上版本使用
String driver="com.mysql.cj.jdbc.Driver";
// 连接上自己新建的数据库,设置useSSL=false,设置时区serverTimezone=Asia/Shanghai
String url="jdbc:mysql://localhost:3306/MySQLTest?useSSL=false&serverTimezone=Asia/Shanghai";
String user="root";
String passWord="123456";
Connection conn=null;
Statement stmt =null;
try {
// 1、加载驱动
Class.forName(driver);
// 2、建立连接
conn = DriverManager.getConnection(url, user, passWord);
// 3.创建执行语句的对象
stmt = conn.createStatement();
String sql="select ID,Name ,Age,Sex FROM MySqlTest.user";
// 4.执行数据库语句
ResultSet resultSet = stmt.executeQuery(sql);
// 5.输出数据
while (resultSet.next()){
System.out.print("id"+resultSet.getInt("id"));
System.out.print("Name"+resultSet.getString("Name"));
System.out.print("Age"+resultSet.getInt("Age"));
System.out.print("Sex"+resultSet.getString("Sex"));
System.out.println();
}
} catch (SQLException SE) {
SE.printStackTrace();
}finally {
// 6. 关闭连接
stmt.close();
conn.close();
}
}
}
结果图:

阅读更多