首页 > 数据库 >在MySQL中实现upsert功能

在MySQL中实现upsert功能

时间:2023-06-24 13:33:06浏览次数:35  
标签:ps 功能 share circ mv ttm MySQL total upsert

1 语法示例

INSERT INTO table_name (column1, column2, ...)
SELECT column1, column2, ...
FROM temp_table
ON DUPLICATE KEY UPDATE
    column1 = VALUES(column1),
    column2 = VALUES(column2),
    ...;

  

2 自己项目中的SQL代码示例

INSERT INTO hs_stock_market_data_daily_basic_lastday (rowkey,ts_code,close,trade_date,turnover_rate,turnover_rate_f,volume_ratio,pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm,total_share,float_share,free_share,total_mv,circ_mv,stock_level,stock_flow_level)

   select ts_code,ts_code,close,trade_date,turnover_rate,turnover_rate_f,volume_ratio,pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm,total_share,float_share,free_share,total_mv,circ_mv,
CASE
    WHEN total_mv <= 300000 THEN 1
    WHEN total_mv > 300000 and total_mv <=500000 THEN 2
    WHEN total_mv > 500000 and total_mv <=1000000 THEN 3
    WHEN total_mv > 1000000 and total_mv <=3000000 THEN 4
    WHEN total_mv > 3000000 and total_mv <=5000000 THEN 5
    ELSE 6
  END AS stock_level,
    CASE
    WHEN circ_mv <= 300000 THEN 1
    WHEN circ_mv > 300000 and circ_mv <=500000 THEN 2
    WHEN circ_mv > 500000 and circ_mv <=1000000 THEN 3
    WHEN circ_mv > 1000000 and circ_mv <=3000000 THEN 4
    WHEN circ_mv > 3000000 and circ_mv <=5000000 THEN 5
    ELSE 6
  END AS stock_flow_level
from  hs_stock_market_data_daily_basic where trade_date =  ( select MAX(trade_date) from hs_stock_market_data_daily_basic limit 1 )

ON DUPLICATE KEY UPDATE
rowkey = VALUES(ts_code),
ts_code = VALUES(ts_code),
close = VALUES(close),
trade_date = VALUES(trade_date),
turnover_rate = VALUES(turnover_rate),
turnover_rate_f = VALUES(turnover_rate_f),
volume_ratio = VALUES(volume_ratio),
pe = VALUES(pe),
pe_ttm = VALUES(pe_ttm),
pb = VALUES(pb),
ps = VALUES(ps),
ps_ttm = VALUES(ps_ttm),
dv_ratio = VALUES(dv_ratio),
dv_ttm = VALUES(dv_ttm),
total_share = VALUES(total_share),
float_share = VALUES(float_share),
free_share = VALUES(free_share),
total_mv = VALUES(total_mv),
circ_mv = VALUES(circ_mv),
stock_level = VALUES(stock_level),
stock_flow_level = VALUES(stock_flow_level);

  

标签:ps,功能,share,circ,mv,ttm,MySQL,total,upsert
From: https://www.cnblogs.com/QuestionsZhang/p/17500964.html

相关文章

  • Linux内核的一些特点和功能
    Linux内核是一个开源的、免费的操作系统内核,它是Linux操作系统的核心组件。Linux内核负责管理计算机硬件资源,提供基本的系统服务和功能。以下是Linux内核的一些特点和功能:多任务支持:Linux内核支持多任务处理,使得多个应用程序可以同时运行并共享系统资源。设备驱动程序:Linux内核......
  • 基于SpringBoot+MySQL+IDEA开发的家庭财务管理系统
    基于SpringBoot+MySQL+IDEA开发的家庭财务管理系统项目介绍......
  • "快速访问"(Quick Access)是 Windows 操作系统中一个常用的功能,它允许用户快速访问最近
    "快速访问"(QuickAccess)是Windows操作系统中一个常用的功能,它允许用户快速访问最近使用的文件和常用的文件夹。它在资源管理器中的左侧导航窗格中显示,并提供了便捷的方式来查找和打开文件。在Windows10中,"快速访问"默认显示用户最近访问的文件和常用的文件夹。它会根据用户......
  • Mysql-二刷一些重要知识点记录
    执行DDL的时候,即使此DDL被其他DML阻塞了,但是后续DML都会被此DDL阻塞(个人理解:DDL、DML按照申请顺序排队执行)[DML加MDL读锁,DDL加MDL写锁,读写之间互斥]使用onlineddl也就不害怕线上DDL了changebuffer存储inser和update的数据。如果不马上查询,起到加速DML的作用[尽量......
  • 最近项(Recent Items)功能在不同版本的 Windows 操作系统中可能会有一些差异和功能更新
    最近项(RecentItems)功能在不同版本的Windows操作系统中可能会有一些差异和功能更新。以下是几个常见的Windows版本的最近项功能的更新情况:WindowsXP:在WindowsXP中,最近项功能也被称为"最近文档"(MyRecentDocuments)。你可以从开始菜单中直接访问最近文档列表,它位于"文......
  • 01 后台系统登陆退出功能
    需求分析代码开发创建controller在reggie下创建一个entity包,复制资料/实体类下面的employee进来,并创建以下包:。在mapper包下创建EmployeeMapper的接口类,编写代码如下:。在service包下创建EmployeeService的接口类,编写代码如下:再在service的impl包下创建并编写这个服务的Empl......
  • 一天吃透MySQL面试八股文
    内容摘自我的学习网站:topjavaer.cn什么是MySQLMySQL是一个关系型数据库,它采用表的形式来存储数据。你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列)。行代表每一行数据,列代表该行中的每个值。列上的值是有数据类型的,比如:整数、字符串、日期等等。数据库的三......
  • MySQL的wait_timeout 参数 set global 设置不生效
    MySQL服务连接数突然暴增,登录服务查看大都是sleep进程,并且1分钟会启用一个新的连接,紧急处理方案是需要手动去释放连接数。登录服务器查看当前超时时间mysql>showvariableslike'%timeout%';+-----------------------------+----------+|Variable_name|Valu......
  • MySQL 中常见的高可用架构部署方案
    MySQL中常见的高可用架构部署方案IT奋斗的青年 2023-06-0608:36 发表于山东收录于合集#mysql17个MySQL中的集群部署方案前言这里来聊聊,MySQL中常用的部署方案。MySQLReplicationMySQLReplication 是官方提供的主从同步方案,用于将一个MySQL的实例同步到另......
  • mysql的读写分离
    读写分离的作用和实现的方式实验环境:上文的主从复制,以及新增了一台客户端进入主mysql数据库创建读写分离账号查看建立的读写分离账号挂载云计算光盘移动解压jdk一直回车后看到此询问输入yes将Java环境从1.8.0_131更改为1.6.0_14修改环境变量添加此三行数据移动jdk安装位置更新环境......