我需要FULL OUTER JOIN多个表.我知道如何从

here开始加入两个表.但我有几个表,我不能将它们应用于它们.我怎样才能实现它?

我的SQL代码,如下:

INSERT INTO table

(

customer_id

,g01

,g02

,g03

,has_card

,activity

)

SELECT sgd.customer_id, sgd.g01,sgd.g02,sgd.g03,sc.value, a.activity

FROM s_geo_data sgd

LEFT JOIN s_category sc

ON sc.customer_id = sgd.customer_id

UNION

SELECT sgd.customer_id, sgd.g01,sgd.g02,sgd.g03,sc.value, a.activity

FROM s_geo_data sgd

RIGHT JOIN s_category sc

ON sc.customer_id = sgd.customer_id

UNION

SELECT sgd.customer_id, sgd.g01,sgd.g02,sgd.g03,sc.value, a.activity

FROM s_geo_data sgd

LEFT JOIN s_activity a

ON a.customer_id = sgd.customer_id

UNION

SELECT sgd.customer_id, sgd.g01,sgd.g02,sgd.g03,sc.value, a.activity

FROM s_geo_data sgd

RIGHT JOIN s_activity a

ON a.customer_id = sgd.customer_id

我也尝试了这个查询:

INSERT INTO reportls.table

(

customer_id

,g01

,g02

,g03

,has_card

,activity

)

SELECT sgd.customer_id, sgd.g01,sgd.g02,sgd.g03,sc.value, a.activity

FROM s_geo_data sgd

LEFT JOIN s_category sc

ON sc.customer_id = sgd.customer_id

LEFT JOIN s_activity a

ON sc.customer_id = sgd.customer_id

UNION

SELECT sgd.customer_id, sgd.g01,sgd.g02,sgd.g03,sc.value, a.activity

FROM s_geo_data sgd

LEFT JOIN s_category sc

ON sc.customer_id = sgd.customer_id

RIGHT JOIN s_activity a

ON a.customer_id = sgd.customer_id

UNION

SELECT sgd.customer_id, sgd.g01,sgd.g02,sgd.g03,sc.value, a.activity

FROM s_geo_data sgd

RIGHT JOIN s_category sc

ON sc.customer_id = sgd.customer_id

LEFT JOIN s_activity a

ON a.customer_id = sgd.customer_id

上次查询执行时间很长,我需要更快的查询.

最佳答案 我想在3个表上有一个FULL OUTER JOIN,你需要这样做:

SELECT t1.value, t2.value, t3.value

FROM t1 LEFT JOIN t2 ON t1.value = t2.value

LEFT JOIN t3 ON t1.value = t3.value

UNION ALL

SELECT t1.value, t2.value, t3.value

FROM t2 LEFT JOIN t1 ON t1.value = t2.value

LEFT JOIN t3 ON t2.value = t3.value

WHERE t1.value IS NULL

UNION ALL

SELECT t1.value, t2.value, t3.value

FROM t3 LEFT JOIN t1 ON t1.value = t3.value

LEFT JOIN t2 ON t2.value = t3.value

WHERE t1.value IS NULL AND t2.value IS NULL

作为替代方案:

SELECT t1.value, t2.value, t3.value

FROM t1 FULL OUTER JOIN t2 ON t1.value = t2.value

FULL OUTER JOIN t3 ON t1.value = t3.value

我建议你创建一些临时表,如t1,t2和t3,用于存储查询结果,然后使用上面的查询.

mysql表连接算法_如何在MySQL中连接多个表相关推荐

  1. vba工作表重命名_如何在Excel中重命名工作表选项卡

    vba工作表重命名 By default, worksheet tabs in Excel are given generic names, such as Sheet1, Sheet2, and s ...

  2. autocad 如何摆正显示_如何在 VB 中连接 AutoCAD

    1.如何在 VB 中连接 AutoCAD. 启动 VB ,引用 AutoCAD 类型库.操作步骤:从"工程"菜单中选择"引用"选项,启动"引用&quo ...

  3. mysql怎么插入时间_如何在MySQL中插入日期?

    在MySQL中插入日期的方法:首先打开脚本文件:然后通过[INSERT INTO tablename (col_name, col_date) VALUE ('DATE: Auto CURDATE() ...

  4. mysql数据库存歌_如何在mysql中存储音乐和图片文件

    标签: 如何在mysql中存储音乐和图片文件? 果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的! 我将告诉你怎样通过HTML表单来储存这 ...

  5. MySQL怎么展示表格_如何在MySQL数据库中显示表的架构?

    从MySQL控制台,什么命令显示任何给定表的架构? #1楼 SHOW CREATE TABLE yourTable; 要么 SHOW COLUMNS FROM yourTable; #2楼 descr ...

  6. function在mysql里总是出错_如何在MySQL函数中引发错误

    如何在MySQL函数中引发错误 我创建了一个MySQL函数,如果传递给参数的值无效,则想引发一个错误. 在MySQL函数中引发错误我有哪些选择? 6个解决方案 69 votes MySQL 5.5引入 ...

  7. mysql query 查询失败_如何在mysql进行查询缓存及失败的解决方法

    都知道函数在使用前需要弄清楚参数的属性,这样才能对函数的使用有较好的了解.有些小伙伴学习了查询缓存后,直接进行了下一步的实战操作.这里小编想提醒大家,开始操作之前一定要先设置参数,不然就会出现问题.下 ...

  8. mysql按域排序_如何在MySQL中对域名进行排序?

    要对域名进行排序,请使用ORDER BY SUBSTRING_INDEX().让我们首先创建一个表-mysql> create table DemoTable670(DomainName tex ...

  9. mysql schema 保存数据_如何在mysql数据库中保存apache spark schema输出

    任何人都可以告诉我,如果有任何方式在apache的火花存储在mysql数据库的JavaRDD?我从2个CSV文件中获取输入,然后在对其内容进行连接操作之后,我需要将输出(输出JavaRDD)保存在my ...

最新文章

  1. 软件测试培训完就业方向怎么选择
  2. (初级)数字信号处理目录(不只是目录)
  3. java实现鼠标宏编程_我應該如何編程高級java遊戲中的鼠標/鍵輸入?
  4. Codeforces 1205C Palindromic Paths (交互题、DP)
  5. 白中英 计算机组成原理_白中英《计算机组成原理》(第5版)笔记和课后习题答案详解...
  6. JavaScript:避免代码的重复执行
  7. Oracle ODI 12c之多表联合查询以及定时任务设置
  8. Android应用案例开发大全 吴亚峰 苏亚光
  9. (ExcelVBA编程入门范例)
  10. SAP 后勤实施攻略笔记-生产模式和计划策略
  11. TcaplusDB X 光与夜之恋,来谈一场高沉浸式的恋爱吧
  12. 大麦 Android 选座场景性能优化全解析
  13. 我的世界服务器修改怪物生成,《我的世界》禁止怪物生成代码 服务器禁止怪物...
  14. sock_alloc原理分析,write与send疑问
  15. mini-smooth-signature.js:小程序canvas带笔锋手写签名,支持微信/支付宝/钉钉/QQ等多平台小程序使用
  16. R plot图片背景设置为透明_数据科学06 | R语言程序设计模拟和R分析器
  17. linux服务器 qsub .pbs 提交作业 无特殊报错,但是提交不上的 bug
  18. 【hadoop权威指南第四版】第三章hadoop分布式文件系统【笔记+代码】
  19. 常用技巧精选(一)尺取法
  20. Ext 仿QQ邮箱全选效果

热门文章

  1. 数据挖掘与分析 - 用JS实现推荐系统的原理与开发
  2. 操作系统 作业调度实验报告
  3. MobileNet Unet
  4. 【pytorch】torch.nn.GroupNorm的使用
  5. 一次搞懂所有排序算法(二)
  6. 自建mysql和华为云mysql_自建数据库和云数据库区别和使用(以MySQL为例)
  7. 弹出查看图片_报表工具如何实现“点击查看原图”
  8. android 组件导出安全,App安全检测实践基础:组件安全(二)
  9. python 玩公众号游戏_Python入门太难?不如从玩塔防小游戏开始,玩通关就能学会编程...
  10. 用python+pillow模块实现抖音晃眼睛的特效,图像处理之路(附源码)