最近遇到一个测试数据的需求,需要往一个表中插入4个来源的数据。

往orders 表中插入 来自

  1. sql_person
  2. cm_user_car_model
  3. cm_sp_product_new
  4. 部分固定数据以及两个递增的时间数据

对于4的数据很好处理不过是时间处理,以及固定值的递增。

对于1,2,3部分,第一眼想到的是用cross join来去三个表的笛卡尔积,三个表各取一条拼合在一起插入

例如select a.*,b.*,c.*  from (select * from t1 where... limit 1 ) a

join  (select * from t2 where... limit 1 )b

Join   (select * from t3 where... limit 1 )c

由于没有明确的对应条件,也就没有办法将结果集一一对应,一次性插入(仔细想想应该也可以,不过我将4部分的数据放在a中一起插入,由于递增的需求我只能一天一天的插入)

但是发现 由于 b,c的结果集可能为 null 导致插入数据的时候发生错误,而limit 1 也无法实现在 select * from t2 where...的结果集中随机取一条的目的。。

我改变了一次性插入的策略,选择先插入一条数据,然后通过

LAST_INSERT_ID()(由于是测试库,只有我一个人再用)等方法获取刚插入的数据自增id,通过自增id来update刚刚插入的数据行。

这样就解决了插入条数的问题,不会因为某个子查询为空而使得三个表的join结果也为空了。

但是子查询结果集中随机取一条并没有实现。Limit 1没有解决我的需求,每一次取出来的都是同一条数据,由于mysql 表没有提供rownum,所以实现起来没有oracle那么水到渠成。网络上提供了一种在查询之中加入一个自实现的’rownum’值,再在查询外嵌套一层的查询来将随机的rownum值取得。

这里可以在查询中加入一个新的随机数字段 ra,通过order by ra 来获取一个随机字段。

SELECT

RAND() as ra,

repay_month,

model_id,

car_price

FROM

cm_user_car_model

order by ra

limit 1

这样显的更加简洁。

Mysql 多表数据拼接插入及子查询结果集随机取一条的更多相关文章

  1. MySQL数据库实验:任务二 表数据的插入、修改及删除

    目录 任务二 表数据的插入.修改及删除 一.利用界面工具插入数据 二.数据更新 (一)利用MySQL命令行窗口更新数据 (二)利用Navicat for MySQL客户端工具更新数据 三.数据库的备份 ...

  2. MySQL多表数据记录查询详解

    在实际应用中,经常需要实现在一个查询语句中显示多张表的数据,这就是所谓的多表数据记录连接查询,简称来年将诶查询. 在具体实现连接查询操作时,首先将两个或两个以上的表按照某个条件连接起来,然后再查询到所 ...

  3. mysql复制表数据或表结构到新表中

    MySQL复制表数据到新表的几个步骤. 1.MySQL复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table; 2.只复制表结构到新表 C ...

  4. mysql复制表数据,多表数据复制到一张表

    对于mysql 复制表数据可以使用 insert into select 方式 示例: $sql="insert into icarzoo.provider(providerId,provi ...

  5. Mysql 复制表数据(表结构相同)

    [1]Mysql 复制表数据(表结构相同) -- 方式一: create table table_name_dest as select * from table_name_src; -- 方式二: ...

  6. MySQL单表数据不超过500万:是经验数值,还是黄金铁律?

    今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢? 曾经在中国互联网技术圈广为流传着这么一个 ...

  7. MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?

    本文阅读时间大约3分钟. 梁桂钊 | 作者 今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢 ...

  8. mysql清空表数据并重置自增ID

    mysql清空表数据并重置自增ID: ## 查看mysql> select * from work_order_company;mysql> show create table work_ ...

  9. MySQL中的DML、DQL和子查询

    一.MySQL中的DML语句 1.使用insert插入数据记录: INSERT INTO `myschool`.`student` (`studentNo`, `loginPwd`, `student ...

随机推荐

  1. SVN配置(服务器端及客户端)

    版本控制工具,在前几年一直用的SVN,从去年后半年开始本人开始使用GIT.为了避免后期再次使用SVN过程中出现生疏,在此将SVN服务端及客户端配置方式罗列出来. 本人使用的SVN版本为 服务端: Vi ...

  2. 使用Docker搭建LNMP开发环境

    1.什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技 ...

  3. 《HTTP权威指南》读书笔记(二) :URL与资源

    1.URL是什么 URL就是因特网资源的标准化名称.URL指向一条电子信息片段,告诉你它们位于何处,以及如何与之交互.通俗来说,就是浏览器寻找信息所需的资源位置. URI是一类更通用的资源标识符,UR ...

  4. 前端开发模拟数据------webpack-api-mocker

    应用场景: 在实际的项目开发过程中,一般都会进行前后端分离的开发模式,前端通过mock或者其他的插件模拟后台返回数据的功能.在常用的webpack构建工程项目中,通过和webpack-dev-serv ...

  5. ABP安装,应用及二次开发视频

    CSDN课程:http://edu.csdn.net/lecturer/944

  6. IT名词概括与简单了解

    云计算概念 云架构 我看过两本云计算,<云计算><云计算架构技术与实践> 云计算是一个很广的概念,简单的说将互联网中的计算机资源按需分配,提高闲置资源的利用率,需要多少你就购买 ...

  7. 软件开发者路线图梗概&书摘chapter2

    空杯心态:放下对技能水平的自鸣得意 1.入门语言:学习一门语言,从实际问题入手→形成反馈回路 构建学习沙箱 利用实际代码,进行学习测试 学习一门语言:与精通该语言的专家一起工作,即找人指导 阅读他人的 ...

  8. ARM Cortex M0 程序映像和启动流程

  9. html基础学习笔记1

    <!DOCTYPE html> 声明为 HTML5 文档  <html> 元素是 HTML 页面的根元素 <head> 元素包含了文档的元(meta)数据,如 &l ...

  10. skimage

    它是由python语言编写的,   子模块名称 主要实现功能 io 读取.保存和显示图片或视频 data 提供一些测试图片和样本数据 color 颜色空间变换 filters 图像增强.边缘检测.排序 ...