Sqlite3中的Join
1.概述
sqlite3是一种轻便的数据库,由DDL(Data defination language),DML(Data manipulation language),TCL(Transaction control language)。
Join主要用于DML中SELECT语句中可选参数FROM后中用于连接两个表以形成一个大的数据表。
2.join的几种类型
2.1 cross join
A cross join B,其中A有m行n列,B有mm行nn列,得到的结果是n+nn列,m*mm行。
cross join 将A的每行分别跟B的每行进行组合形成结果表的行。
2.2inner join
是sqlite3的默认的join,所以A inner join B可以写成A join B,但通常还要外加约束条件,否则返回结果跟cross join一样。外加约束条件有ON(如ON A.a=B.b),USING(如using a或者USING(a,b)需要注意的是a,b必须都是A和B中的列名,并且如果是using(a,b),返回结果必须满足A,B中的a,b都对应相等),注意到 ON返回的列有重复,而Using必须指明需要用的a,b。所以还有一种更简洁的方式NATURAL JOIN,可以自动匹配A,B中所有相同列名,如果值一致就返回。
3.Outer join
sqlite3中outer join 与inner join 类似,也需要ON,USING的约束条件,否则也会返回Cross join 的结果。但与inner join 不同的是如果存在不满足条件的行,将保留左边的A的行,对于右边的B的行忽略,这也就是所谓的LEFT OUTER JOIN,需要注意的是不能简写成OUTER JOIN,因为还有RIGHT OUTER 和FULL OUTER JOIN,不过后两种暂时不支持。
Sqlite3中的Join的更多相关文章
- SQL中inner join、outer join和cross join的区别
对于SQL中inner join.outer join和cross join的区别简介:现有两张表,Table A 是左边的表.Table B 是右边的表.其各有四条记录,其中有两条记录name是相同 ...
- jQuery中的join方法
和JS 中的JOIN 方法一样,将一数组按照JOIN的参数连接起来.比如: var arr = [ "a", "b", "c", " ...
- Java多线程中的join()方法
一.join()方法介绍 join() 定义在Thread.java中.join()方法把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的join( ...
- Spark 中的join方式(pySpark)
spark基础知识请参考spark官网:http://spark.apache.org/docs/1.2.1/quick-start.html 无论是mapreduce还是spark ,分布式框架的性 ...
- Java并发编程--多线程中的join方法详解
Java Thread中, join()方法主要是让调用该方法的thread在完成run方法里面的部分后, 再执行join()方法后面的代码 例如:定义一个People类,run方法是输出姓名年龄. ...
- SQL点滴2—重温sql语句中的join操作
原文:SQL点滴2-重温sql语句中的join操作 1.join语句 Sql join语句用来合并两个或多个表中的记录.ANSI标准SQL语句中有四种JOIN:INNER,OUTER,LEFTER,R ...
- SQL Server中INNER JOIN与子查询IN的性能测试
这个月碰到几个人问我关于"SQL SERVER中INNER JOIN 与 IN两种写法的性能孰优孰劣?"这个问题.其实这个概括起来就是SQL Server中INNER JOIN与子 ...
- SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别
前言: 今天主要的内容是要讲解SQL中关于Join.Inner Join.Left Join.Right Join.Full Join.On. Where区别和用法,不用我说其实前面的这些基本SQL语 ...
- SQL语句中 INNER JOIN的用法!
一.SQL语句中 INNER JOIN的用法? 1.INNER JOIN的作用? 可以在两个或者更多的表中获取结果,得出一张新表. [隐式内连接] 表一 car 购物车 表二 user 用户 发现 ...
- MapReduce中的Join
一. MR中的join的两种方式: 1.reduce side join(面试题) reduce side join是一种最简单的join方式,其主要思想如下: 在map阶段,map函数同时读取两个文 ...
随机推荐
- 分布式锁—2.Redisson的可重入锁
大纲 1.Redisson可重入锁RedissonLock概述 2.可重入锁源码之创建RedissonClient实例 3.可重入锁源码之lua脚本加锁逻辑 4.可重入锁源码之WatchDog维持加锁 ...
- CTF-CRYPTO-ECC(2)
CTF-CRYPTO-ECC(2) 椭圆加密 4.BSGS(小步大步法) [HITCTF 2021 ] task.py #Elliptic Curve: y^2 = x^3 + 7 mod N whi ...
- Ubuntu22.04双网卡调试
最近捡起正点原子的linux开发板,又开始了linux的学习,这条路走走停停的,隔了一年时间很多积累的东西都忘了.打开VMware虚拟机发现网络也连接不上了,我的印象中去年是把虚拟机的双网卡配置好了, ...
- manim边学边做--线性变换的场景类
在数学可视化领域,Manim的LinearTransformationScene类为线性代数教学提供了强大的工具. 这个专门设计的场景类继承自VectorScene,通过内置的变换动画和坐标系管理,能 ...
- 【Unit4】UML解析器(模型化设计)-作业总结 & 【BUAA-OO】课程总结
第四单元作业总结 1.题目概述 UML类图建模与查询(8) + UML顺序图/状态图建模与查询(3+3) + 模型错误检查(9),三次迭代共23条命令 2.构架设计 一开始以为和第三单元差不多,稍微用 ...
- 常见的 AI 模型格式
来源:博客链接 过去两年,开源 AI 社区一直在热烈讨论新 AI 模型的开发.每天都有越来越多的模型在 Hugging Face 上发布,并被用于实际应用中.然而,开发者在使用这些模型时面临的一个挑战 ...
- shell子字符串截取
http://c.biancheng.net/view/1120.html Shell 截取字符串通常有两种方式:从指定位置开始截取和从指定字符(子字符串)开始截取. 从指定位置开始截取 这种方式需要 ...
- issue: java.lang.NoClassDefFoundError: javax/el/ELManager
问题描述: Context initialization failed org.springframework.beans.factory.BeanCreationException: Error c ...
- kettle介绍-Step之Write to log
Write to log写日志介绍 写日志步骤是将输入步骤的信息打印在日志窗口,供用户直接查看 Step name:步骤的名称,在单一转换中,名称必须唯一. Log level:设置日志的显示级别. ...
- js获取本地图片文件的原始宽高尺寸
<!-- 关键api:URL.createObjectURL(object) object:File对象或 Blob 对象 参考:https://developer.mozil ...