精华内容
下载资源
问答
  • 2021-01-26 03:37:57

    一、需求

    有两个表格,test和test2如下所示:

    mysql> select * from test;

    +------+------+------------+

    | data | id | timestamp |

    +------+------+------------+

    | 300 | 3 | 1536292800 |

    | 200 | 2 | 1536292808 |

    +------+------+------------+

    mysql> select * from test2;

    +------+------+

    | data | id |

    +------+------+

    | 10 | 3 |

    | 20 | 2 |

    +------+------+

    1. 需求A

    在test表格上直接操作,增加一列为context_time,数据类型为datetime,并赋值为对应的行的UNIX time的datetime,如下表所示(可以延伸为对每一行的某个字段进行相同的运算或函数操作后赋值到新的字段):

    +------+------+------------+---------------------+

    | data | id | timestamp | context_time |

    +------+------+------------+---------------------+

    | 300 | 3 | 1536292800 |

    更多相关内容
  • PHP MySQL 插入多条数据

    2021-01-03 01:16:55
    使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句。 以下实例向 “MyGuests” 表添加了三条的记录: 实例 (MySQLi – 面向对象) connect_error) { die(连接失败: . $...
  • 在ORDER BY前添加GROUP BY aaci.component_id ,使用 component_id 进行排序 SELECT aasi.wt_id as turbineId, aafi.function_id as functionId, aafi.desc as `desc`, aaci.component_id as componen

    只排序没有分组之前数据:

    使用:ORDER BY aaci.component_id, aasi.create_time desc
    在这里插入图片描述

    分组去重,排序之后数据

    ORDER BY前添加GROUP BY aaci.component_id ,使用 component_id 进行排序

    SELECT aasi.wt_id as turbineId, aafi.function_id as functionId, aafi.desc as `desc`,  
    aaci.component_id as componentId, aaci.component_name as componentName,
    aasi.peak_peak_value as peakPeakValue, aasi.create_time as createTime
    FROM ais_auxiliary_component_info aaci
    LEFT JOIN ais_auxiliary_signal_info aasi 
    ON aasi.component_id=aaci.component_id
    LEFT JOIN ais_auxiliary_function_info aafi
    ON aaci.function_id=aafi.function_id
    WHERE aafi.function_id = 1 and aasi.wt_id = 1 
    GROUP BY aaci.component_id
    ORDER BY aaci.component_id, aasi.create_time desc
    

    效果:
    在这里插入图片描述

    看出来peakPeakValue和createTime 并不是最新的一条数据

    解决方法

    select中 使用
    SUBSTRING_INDEX(GROUP_CONCAT(aasi.peak_peak_value ORDER BY aasi.create_time desc), ',', 1) as peakPeakValue
    来获取最新的peakPeakValue数据;
    max(aasi.create_time) as createTime 来获取createTime最新数据

    SELECT aasi.wt_id, aafi.function_id, aafi.desc, aaci.component_id, aaci.component_name ,aasi.id as aasiId,
    SUBSTRING_INDEX(GROUP_CONCAT(aasi.peak_peak_value ORDER BY aasi.create_time desc), ',', 1) as peakPeakValue, max(aasi.create_time) as createTime
    FROM ais_auxiliary_component_info aaci
    LEFT JOIN ais_auxiliary_signal_info aasi 
    ON aasi.component_id=aaci.component_id
    LEFT JOIN ais_auxiliary_function_info aafi
    ON aaci.function_id=aafi.function_id
    WHERE aafi.function_id=1 and aasi.wt_id=1 
    GROUP BY aaci.component_id
    ORDER BY aaci.component_id, aasi.create_time desc
    

    效果:
    在这里插入图片描述

    解决思路:

    首先进行分组去重进行排序,然后使用GROUP_CONCAT函数对所需要列,进行组合起来,然后使用时间进行排序,将最新的数据放在第一个,然后再使用SUBSTRING_INDEX()函数取第一个数据就行,时间使用max()函数获取最新时间即可。

    group_concat函数

    group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
    

    SUBSTRING_INDE函数

    substring_index(str,delim,count)
        str:要处理的字符串
        delim:分隔符
        count:计数
    
    展开全文
  • 在实际业务中,我们经常会遇到如何从同一个字段相同值中获取最新一条数据的问题。经自身积累以及百度之后,将常用的方法记录下来。 具体事例 由于使用的表的数据较多,所以只展示了部分数据 group by的方式 第一种 ...

    在实际业务中,我们经常会遇到如何从同一个字段相同值中获取最新一条数据的问题。经自身积累以及百度之后,将常用的方法记录下来。

    具体事例
    由于使用的表的数据较多,所以只展示了部分数据
    在这里插入图片描述

    group by的方式

    第一种

    SELECT
    	order_id,
    	max( product_price ) AS product_price 
    FROM
    	oms_order_item 
    GROUP BY
    	order_id
    

    得到的结果
    在这里插入图片描述
    注意:

    SELECT
    	id,
    	order_id,
    	max( product_price ) AS product_price 
    FROM
    	oms_order_item 
    GROUP BY
    	order_id
    

    在这里插入图片描述

    如上述SQL,若想获取其他字段的数据,而直接在SQL语句上增加该字段的话,查询到的结果是不一致的(product_price 最大的那条数据对应的id应该是25,而查询出来的id是21(默认显示分组后的第一条数据的值)),需注意。由于能力有限,具体原因并不知道。若有大佬知道,希望能给出答案。

    第二种

    SELECT
    	a.id,
    	a.order_id,
    	a.product_price
    FROM
    	( SELECT * FROM oms_order_item ORDER BY product_price DESC LIMIT 10000 ) a 
    GROUP BY
    	order_id
    

    在这里插入图片描述
    因为在mysql5.7的时候,子查询的排序已经变为无效了,可能是因为子查询大多数是作为一个结果给主查询使用,所以子查询不需要排序的原因。
    所以,对子查询的排序进行limit限制,此时子查询就不光是排序,此时排序会生效,但是限制条数却只能尽可能的设置大些。

    窗口函数的方式

    序号函数:ROW_NUMBER()、RANK()、DENSE_RANK()

    SELECT
    	a.id,
    	a.order_id,
    	a.product_price
    FROM
    	( SELECT order_id, ROW_NUMBER ( ) OVER ( PARTITION BY order_id ORDER BY product_price DESC ) AS price_order,product_price FROM t_score ) a
    

    头尾函数:FIRST_VALUE(expr)、LAST_VALUE(expr)

    SELECT
    	id,
    	order_id,
    	product_price,
    	FIRST_VALUE ( product_price ) OVER w AS first_price,
    	LAST_VALUE ( product_price ) OVER w AS last_price 
    FROM
    	oms_order_item 
    WINDOW w AS ( PARTITION BY order_id ORDER BY product_price )
    

    由于mysql版本过低(8.0及以上才可使用窗口函数),无法使用。只是将用法记录一下。

    展开全文
  • 、编写测试案例向MySQL数据库中插入百万条数据。测试数据表建表脚本如下:use db_xk; drop table if exists tb_test2; create table tb_test2 ( id int primary key auto_increment, subject varchar(50) ...
  • 首先,将按条件查询并排序的...mysql> select accepttime,user,job from tuser_job where user =8 order by accepttime desc;+---------------------+------+-----+| accepttime | user | job |+---------------...

    首先,将按条件查询并排序的结果查询出来。

    mysql> select accepttime,user,job from tuser_job where user =8 order by accepttime desc;

    +---------------------+------+-----+

    | accepttime | user | job |

    +---------------------+------+-----+

    | 2015-07-27 15:32:45 | 8 | 1 |

    | 2015-07-26 14:22:56 | 8 | 1 |

    | 2015-07-26 10:24:39 | 8 | 2 |

    | 2015-07-20 17:16:38 | 8 | 1 |

    +---------------------+------+-----+

    4 rows in set

    然后,从中分组选出最新一条记录。

    mysql> select accepttime,user,job from (select * from tuser_job where user =8 order by accepttime desc) as a group by job;

    +---------------------+------+-----+

    | accepttime | user | job |

    +---------------------+------+-----+

    | 2015-07-27 15:32:45 | 8 | 1 |

    | 2015-07-26 10:24:39 | 8 | 2 |

    +---------------------+------+-----+

    2 rows in set

    MySQL 分组后取每组前N条数据

    与oracle的 rownumber() over(partition by xxx  order by xxx )语句类似,即:对表分组后排序 创建测试emp表 1 2 3 4 5 6 7 8 9 ...

    分组后取每组内排名的Top N的SQL语句

    给个MySQL例子参考 -----查询每门课程的前2名成绩 CREATE   TABLE   StudentGrade( stuId   CHAR(4),         --学号 subId   I ...

    MSSQL 分组后取每组第一条(group by order by)

    查询中经常遇到这种查询,分组后取每组第一条.分享下一个SQL语句: --根据 x 分组后.根据 y 排序后取第一条 select * from ( select ROW_NUMBER() over(p ...

    oracle分组后取某组中最大的值

    查询username,根据fundcode分组,按照date倒序,取date最大的一条数据 select * from ( select username, row_number() over(par ...

    oracle分组后取每组第一条数据

    数据格式: 分组取第一条的效果: sql语句: SELECT * FROM ( ;

    oracle 分组后取每组第一条数据

    ‘数据格式 分组取第一条的效果 sql SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC) rn, test ...

    sql 用Group by分组后,取每组的前几条记录

    转自:http://blog.163.com/jeson_lwj/blog/static/135761083201052411115783/ --查询每门课程的前2名成绩 CREATE TABLE S ...

    java stream 处理分组后取每组最大

    有一个需求功能:先按照某一字段分组,再按照另外字段获取最大的那个 Map configMap = configList.parallelStr ...

    用Group by分组后,取每组的前3条记录,怎么取?

    使用子查询进行查询 SELECT * FROM home_content a WHERE ( SELECT count(id) FROM home_content WHERE class_link = ...

    随机推荐

    Beennan的内嵌汇编指导(译)Brennan's Guide to Inline Assembly

    注:写在前面,这是一篇翻译文章,本人的英文水平很有限,但内嵌汇编是学习操作系统不可少的知识,本人也常去查看这方面的内容,本文是在做mit的jos实验中的一篇关于内嵌汇编的介绍.关于常用的内嵌汇编(AT ...

    使用Cyclone IV控制DDR2

    根据你的DDR2手册配置好megacore,megacore会生成一个example top: 在quartus中运行megacore生成的xxx_pin_assignments.tcl,指定DDR2 ...

    数据库mysql的基本命令

    问题分析 当数据量很大的时候,所有数据都集中在一个文本文件中的话,读写会很困难,内存消耗大,速度很慢 操作很麻烦,因为读写都要根据指定的格式尽心解析,不通用 每次获取数据都要全部数据重新读写,不能通过 ...

    Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level(转)

    [问题] 一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: IndentationError: unindent does not ...

    Oracle 表空间的创建与管理

    Oracle数据库创建之后有一些默认的表空间随之被创建,查询数据字典 dba_data_files 可以得到数据库当前的所有表空间信息. select * from v$tablespace; sel ...

    SpringTask定时任务的使用

    实现定时任务简单的有四种方式:Timer\ScheduledThreadPool线程池\quartz(常用),还有另一种就是springtask. 都说springtask上手简单,于是简单的研究一下 ...

    NOIP常见模板集合

    Preface 这篇博客记录的是我联赛前虽然只有两天了的打板子记录. 只求真的能给我起到些作用吧,一般按照难度排序. 而且从这篇博客开始我会用H3的标题代替H4 为了节约篇幅,以下的代码一般均以cla ...

    C. Oh Those Palindromes

    题意 给以一个字符串,让你重排列,使得回文子串的数目最多 分析 对于一个回文串,在其中加入一些字符并不会使回文子串的个数增加,所以对于相同的字符一起输出即可,我是直接排序 代码 #include&lt ...

    Scala_控制结构

    控制结构 if条件表达式  val x = 6  if (x>0){    println("This is a positive number") }else if(x== ...

    展开全文
  • 需求:现地图只显示有事件摄像头的最新一条事件信息,故,需要ID倒序后,以摄像头分组,以此获得摄像头最新的一条事件信息。(这里以ID倒序而不以创建时间倒序,是有一定优势的)。 思路:先ID(时间)倒序,后分组...
  • mysql数据库删除重复的数据保留一条

    万次阅读 多人点赞 2019-07-09 22:15:13
    现在身份证号identity_id和姓名name有很多重复的数据,需要删除只保留一条有效数据。 2.模拟环境 1.等入mysql数据库,创建一个单独的测试数据库mysql_exercise create database mysql_exercise charset utf8; 2....
  • MySQL添加数据

    千次阅读 2022-01-11 11:54:48
    1.给指定列添加数据 insert into 表名(列名1,列名2,...) values(值1,值2,...) 2.给全部列添加数据 insert into 表名 values(值1,值2,...) 3.批量添加数据 insert into 表名(列名1,列名2,...) values(值1...
  • MySQL存储过程次性添加条数据

    千次阅读 2019-09-07 21:56:33
    MySQL存储过程次性添加条数据 代码块 DELIMITER $$ CREATE PROCEDURE add_in_Student(in i INT) BEGIN DECLARE init_data INTEGER DEFAULT 1; WHILE init_data <= i DO ...
  • 我们先来创建种表Authors: CREATE TABLE Authors( AuthID SMALLINT NOT NULL PRIMARY KEY, AuthFN VARCHAR(20), AuthMN VARCHAR(20), AuthLN VARCHAR...然后向表中次性插入多条数据,sql插入代码如下: INSER...
  • mysql一次性插入多条数据

    千次阅读 2021-01-18 22:38:47
    1、如果指定了该列的值,则插入的值不能和已有的值重复,而且必须大于其中最大的个值;2、也可以不指定该列的值,只将其他列的值插入,让ID还是按照MySQL自增自己填;具体:1.创建数据库create table if not ...
  • mysql分组查询取第一条数据

    千次阅读 2021-04-14 10:31:12
    mysql分组查询取第一条数据 在做项目时遇到了,mysql分组查询取第一个的需求 表结构如下 需求是根据code分组,取每组中版本号最大的数据 方案一 SELECT t.* FROM ( SELECT code, max( version ) AS version...
  • 但是这种方式一次只能插入一条数据,要想同时插入多条数据,就需要多次调用此SQL语句,这就意味着需要多次与数据库建立连接。这样一来,就会增加服务器的负荷,因为,执行每一次SQL服务器都要同样对SQL进行分析、...
  • C# 往mysql中插入一条或者多条数据

    万次阅读 2021-02-25 11:29:55
    using MySql.Data; using MySql.Data.MySqlClient; using System.Data; using System.Collections.Generic; using System.Linq; using System.Text; /// <summary> ///MYSQLHelper 的摘要说明 /// &.
  • Mysql取分组后的每组第一条数据

    千次阅读 2020-12-22 01:28:12
    Mysql取分组后的每组第一条数据gruop by 分组后 进行 order by mysql会按照 先分组后排序的形式进行输出 并不能做到每组中的第一条数据取出。我的思路是 : 先将要查询的数据表转换成已经排序的临时表 在进行 分组...
  • mysql插入(记录)变量,C/C++连接mysql插入一条数据(记录)、Mysql
  • 针对某些特殊测试,需要添加大量数据,且这些测试具有一定的规律性,可以按照以下的sql脚本循环添加,可以是1000,也可以是百万。 CREATE PROCEDURE p14 () BEGIN declare i int; set i=1001; while i<=...
  • Mysql重复数据查重保留一条

    千次阅读 2021-07-02 14:53:40
    将username重复的用户查询出来,保留一条数据。 先附上查重的sql以供验证: SELECT username, count(*) as num FROM t_user GROUP BY username HAVING count(*)>1; 查询结果为: 接下来,就需要将username...
  • 修改多条数据:最近oschina上又有朋友问到了mysql中一次更新多条不同的记录的方法,我知道的方法有两种,使用on duplicate key update语法和使用 replace into语法。这两个语法都需要主键索引或唯一索引...
  • mysql如何查询最新插入的数据

    千次阅读 2021-01-18 17:59:26
    MySQL中,使用auto_increment类型的id字段作为表的主键,并用它作为其他表的外键,形成“主从表结构”,这是数据库设计中常见的用法。但是在具体生成id的时候,我们的操作顺序一般是:先在主表中插入记录,然后...
  • mysql 一次插入多条数据和一次一条数据效率对比 insert into `user`(name,password) VALUES ("12","kk啊"),("15","好好学习"),("13","天天向上"); insert into `user`(name,password) VALUES ("12","kk啊"); ...
  • MySQL批量插入1000条数据

    千次阅读 2021-01-19 06:39:48
    create PROCEDURE 批量插入1000条数据()BEGINDECLARE i int;set i = 1;WHILE i < 120 DOinsert into `1000`(user,password) values(concat("UU",i),concat("PWD",i));set i = i+1;END WHILE;END//***************...
  • 怎么向Mysql视图中增加新数据

    千次阅读 2021-01-26 22:47:43
    本篇文章主要给大家介绍mysql数据表中视图是怎么新增数据的。mysql视图的相关知识在我们之前的文章中,都已经给大家详细介绍过了,相信大家对视图肯定有了更深一步的了解。从前面文章的介绍中,大家应该都知道了视图...
  • sql语句怎么添加一条记录?

    千次阅读 2021-01-18 20:35:39
    展开全部sql语句中,添加记录的语法为:insert into 表名 (col1,col2....coln)values(value1,value2.....valuen);其中,如果你插入的每列都是顺序插32313133353236313431303231363533e78988e69d8331333366306434...
  • insertintopersons (id_p,lastname,firstName,city) values (200,'haha','deng','shenzhen'), (201,'haha2','deng','GD'), (202,'haha3','deng','Beijing'); from.该博客 ...
  • MySQL中查询时间最大的一条记录

    千次阅读 2021-01-18 20:09:22
    在项目中要查询用户最近登录的一条记录的 ip直接写如下 SQL:SELECT ip,MAX(act_time) FROM users_login GROUP BY login_id;但是这样是取不出用户登录记录中时间最大的那个 ip , 仅仅只是查到了最大时间,和 ip 没...
  • mysql通过命令添加1条数据

    千次阅读 2018-11-21 14:26:05
    mysql通过命令添加1条数据1.语法: INSERT INTO 表名 (字段1,字段2,...字段n) VALUES (值1,值2,...值n);2.语法解析: INSERT INTO ... VALUES ...:向表插入数据命令3.示例: INSERT INTO student (name,sex) VALUES...
  • MySQL如果添加一条数据,如果存在就修改,如果不存在就添加 三种办法 1. replace into 他的用法和insert into 一模一样, insert into(a,b,c) values(1,2,3) replace into(a,b,c) values(1,2,3) 作用: insert ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 383,890
精华内容 153,556
关键字:

新增加一条数据mysql

mysql 订阅