MySQL 间隔取数据

📅 2022-03-21 13:07 👁️ 376 💬 0

MySQL 间隔取数据

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

数据表如下:

image-20220321130234445

具体实现

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 

结果:

image-20220321130536404

阅读更多

MySql 分组 获取每组最新的一条数据

📅 2022-03-21 12:45 👁️ 2208 💬 0

MySql 分组 获取每组最新的一条数据

前提:学生成绩表如下

image-20220321123800495

问题描述:获取每门科目成绩最高的记录,即取出 语文成绩最高(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`

结果:

image-20220321124234069

阅读更多

Idea 连接MySQL数据库

📅 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();

        }
    }
}

结果图:

阅读更多
点击右上角即可分享
微信分享提示