精华内容
下载资源
问答
  • SQL多表关联查询

    千次阅读 2019-09-19 09:26:01
    有时候,我们查询数据时,会采用数据库关联查询的方式。数据库通过连接两张张表查询时,会生成一张临时的中间,然后返回给用户的就是这张临时的数据。那么具体怎么操作呢?我们可以采用left join,搭配...

    关于

    有时候,我们查询数据时,会采用多数据库关联查询的方式。数据库通过连接两张表或多张表查询时,会生成一张临时的中间表,然后返回给用户的就是这张临时表的数据。那么具体怎么操作呢?我们可以采用left join,搭配on、where来实现。

    具体

    备注: 1.on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2.where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

    SELECT * FROM table1 a LEFT JOIN table2 b ON a.Sid = b.Sid WHERE a.Sname="小明"
    Select * from aaa a left join bbb b on a.id = b.id and b.name = '111111111';
    复制代码

    个人案例:选用两表中部分字段

    SELECT a.project_id AS 项目id,
           b.before_time AS 统计的结束时间,
           b.valid_row_count AS 行数,
           b.add_row_count AS 增加行数,
           b.delete_row_count AS 删除行数
     FROM 
     gitlog_project_app a
     LEFT JOIN
     gitlog_detail b
     ON a.id = b.project_app_id
     order by project_id desc复制代码

     

    展开全文
  • SQL多表联合查询

    千次阅读 2018-04-28 17:11:08
    注:所有的下划线+斜体语句都是非必须语句多表联合检索:SQL语句:Select 用逗号隔开的一排列名From 表名1,表名2, …Where 检索条件+连接条件相当于语句如果没有检索条件+连接条件,同理于笛卡尔积θ连接之等值连接...

    注:所有的下划线+斜体语句都是非必须语句


    多表联合检索:

    SQL语句:

    Select  用逗号隔开的一排列名

    From  表名1,表名2, …

    Where  检索条件+连接条件

    相当于语句

    如果没有检索条件+连接条件,同理于笛卡尔积


    θ连接之等值连接:

    例如:按"001"号课成绩由高到低顺序显示所有学生的姓名(二表连接)

    Select Sname From Student, SC
    Where Student.S# = SC.S# and SC.C# = ‘001’
    Order By Score DESC;

    按数据库成绩由高到低顺序显示所有同学姓名(三表连接+排序)

    Select Sname From Student, SC, Course
    Where Student.S# = SC.S# and SC.C# = Course.C# and Cname = '数据库'
    Order By Score DESC;

    示例图:


    多表连接时,如两个表的属性名相同,则需采用表名.属性名方式来限定该属性是属于哪一个表


    重名处理:

    应用场景:连接运算涉及到重名的问题,如两个表中的属性重名,连接的两个表重名(同一表的连接)等,因此需要使用别名以便区分

    SQL语句:

    Select  列名1 as 别名1,列名2 as 别名2……

    From  表名1 as 表名1,表名2 as 表名2……

    Where  检索条件+连接条件

    是的"as"可以省略,当定义了别名后,在检索条件中可以使用别名来限定属性

    例如:①求既学过001号课又学过002号课的所有学生的学号

    Select S1.S# From SC S1, SC S2
    Where S1.S# = S2.S# and S1.C#='001' and S2.C#='002';

    ②求001号课成绩比002号课成绩高的所有学生的学号


    同一表的连接示例图:




    展开全文
  • Oracle SQL 多表关联查询以及分组计算

    千次阅读 2019-07-29 12:13:40
    遵循第三范式,我们需要联合多表查询结果返回给用户,若查询时不指定条件,会以笛卡儿积方式返回数据,这并不是我们希望的。 SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1 = ...

    Oracle SQL 多表关联查询

    遵循第三范式,我们需要联合多表查询结果返回给用户,若查询时不指定条件,会以笛卡儿积方式返回表数据,这并不是我们希望的。

    SELECT table1.column, table2.column
    FROM table1, table2
    WHERE table1.column1 = table2.column2;
    

    这已经是最基础的等于连接

    不等连接
    < 或者 > 或者 <> 或者!= 或者 between … and …

    外连接:
    左外连接,右外连接
    左外连接就是按照左边的table来生成查询结果,右表查询不到的就用空来表示,写法为

    SELECT table1.column, table2.column
    FROM table1, table2
    WHERE table1.column = table2.column(+);
    

    可记为:哪边有加号哪边就可以为空

    还有另外一种写法:

    SELECT e.last_name, e.department_id, d.department_name
    FROM employees e
    LEFT OUTER JOIN departments d
    ON (e.department_id = d.department_id) ;
    

    全连接

    select * from t_A a full outer join t_B b on a.id = b.id;    
    

    自连接

    有时我们需要自表连接来查询数据
    我们采用起别名的方式

    SELECT table1.column, table2.column
    FROM table1, table1 table2
    WHERE table1.column1 = table2.column2;
    

    分组计算函数

    这个真的是超级好用

    SELECT [column,] group_function(column), ...
    FROM table
    [WHERE condition]
    [GROUP BY column]
    [ORDER BY column];
    

    select后面可以添加分组函数,或者是已经经过分组的条件列
    分组函数有:
    SUM 求和
    AVG 求平均
    MAX
    MIN
    COUNT 求数量

    注意:不能在Where 条件中使用分组计算函数表达式,当出现这样的需求的时候,使用Having 子句。

    SELECT department_id, AVG(salary) FROM employees
    GROUP BY department_id
    HAVING AVG(salary) > 8000;
    

    子查询

    子查询其实就是sql嵌套,举个例子:

    SELECT last_name
    FROM employees
    WHERE salary >
    (SELECT salary
    FROM employees
    WHERE last_name = 'Abel');
    

    注意:单行比较必须对应单行子查询(返回单一结果值的查询); 比如= , >
    多行比较必须对应多行子查询(返回一个数据集合的查询);比如 IN , > ANY, > ALL 等

    展开全文
  • sql语句多表查询的酥油方法,有左外连接,右外连接,以及嵌套查询
  • Mysql学习中 ,单表查询每个人都很...但是多表之间的关联查询对于初学者是很难掌握的,以下是我学习中,结合老师所讲例子作的总结,主要就是三张表的关联查询。还包括group by操作。Join on;left join on;group by。
  • :用户:id,名称,***;(保存所有用户信息); 步数:id,用户id,步数,时间,***;(保存所有用户步数信息,假如当天有步数一天一条,如果没有当天无记录); 好友:id,好友1 id,好友2 id,状态,...

    表:用户表:id,名称,***;(保存所有用户信息);

           步数表:id,用户id,步数,时间,***;(保存所有用户步数信息,假如当天有步数一天一条,如果没有当天无记录); 

           好友表:id,好友1 id,好友2 id,状态,***;(保存好友关系,状态1好友,-1解除好友); 

           好友pk表:id,好友1 id,好友2 id,状态,***;(保存好友关系,状态输或赢); 

     

    需求:获取指定用户的所有好友列表(显示:名称,步数,PK状态),并按步数从大到小排序。

    1.获取所有好友id(设指定好友id = 100003)

    SELECT IF(aUserId=100003,bUserId,aUserId) AS friendUserId FROM `t_friends` 
    WHERE (aUserId = 100003 || bUserId = 100003) AND STATUS = 1;

    2.从用户表中查找好友信息

    SELECT u.`nickName`,u.avatarUrl,u.id,
    FROM `t_user` u WHERE  u.id IN 
    (SELECT IF(aUserId=100003,bUserId,aUserId) AS friendUserId FROM `t_friends` 
    WHERE (aUserId = 100003 || bUserId = 100003) AND STATUS = 1) ;

    3.获取步数

    SELECT s.step FROM `t_step` s WHERE TIMESTAMP = UNIX_TIMESTAMP(CURDATE()) AND s.`userId` = 用户id

    4,获取比赛状态

    SELECT mr.status FROM `t_match_running` mr WHERE TIME = UNIX_TIMESTAMP(CURDATE()) AND (  mr.`fromUserId`=用户id|| mr.`toUserId` =  用户id )

    5.ifnull(b,a):表示假如b是null,就取值为a,如果b不是null,则值取b值。

    组装:

    SELECT u.`nickName`,u.avatarUrl,u.id,
    IFNULL((SELECT s.step FROM `t_step` s WHERE TIMESTAMP = UNIX_TIMESTAMP(CURDATE()) AND u.id = s.`userId`),0) AS step ,
    IFNULL((SELECT mr.status FROM `t_match_running` mr WHERE TIME = UNIX_TIMESTAMP(CURDATE()) AND (  mr.`fromUserId`=u.`id`|| mr.`toUserId` =  u.id  )),0) AS STATUS
    FROM `t_user` u WHERE  u.id IN 
    (SELECT IF(aUserId=100003,bUserId,aUserId) AS friendUserId FROM `t_friends` 
    WHERE (aUserId = 100003 || bUserId = 100003) AND STATUS = 1) ORDER BY step DESC;

     

     

     

     

     

    展开全文
  • SQL多表联合查询高效率

    千次阅读 2012-07-18 11:29:27
    多表联合查询效率 今天做项目时,用到了多表查询。有三个分别为et_task_termtt,et_core_thes_term_category ttc , et_core_thes_terms t 其中tt.termid=t.id、ttc.termid=t.id 刚 开始时用自然连接,sql...
  • sql 多表联合查询并计数

    千次阅读 2016-11-15 10:37:45
    SELECT Organ.OrganName, SOSAlarm.TermName,COUNT(*)as counts from Organ,Users,SOSAlarm WHERE Users.UserName=SOSAlarm.TermName and Users.UserOrgan_ID=Organ.ID group by SOSAlarm.TermName,Organ.OrganNam
  • sql 多表联合查询,其中两张数据字段结构一样?如何按条件查询所有项目? a,e两张的字段是一样的,只是数据有不同(有的为空等),且ab的字段是用代码来显示的,要通过bcd来匹配显示成中文名称,ae的所有...
  • 图解SQL多表关联查询

    万次阅读 热门讨论 2008-07-07 10:08:00
    内连接左连接右连接 全外连接
  • 1.首先先建立两个create table table1( mon varchar2(14), dep number(4), yj number(4))insert into table1 values ('一月份',1,10);insert into table1 values ('一月份',2,10);insert into table1 values ('...
  • SQL多表联合查询(Access数据库

    千次阅读 2008-11-06 07:53:00
    条件:Access数据库的三个,a、b、c,三个结构不同,其中都有字段ID,a为主,其中的ID不一定b、c中都存在,建立此三个联合查询。 根据SQL语法,通过连接运算符可以实现表查询。连接可以...
  • 在jpa中使用联合查询,关于返回值类型的问题,一直不知该怎么写,今天终于找到了解决的办法,记录一下 ArticleVoteRepository.java: @RepositoryRestResource(path = "vote") public interface ...
  • SQL多表联合查询实现插入/更新/删除

    万次阅读 2015-12-22 17:03:03
    具体描述:有两个关联,比如A是主,B是A的关联。A和B各自的主键都是自动增长的。 所以插入顺序:先插入A,再插入B;  更新顺序:随意;  删除顺序:先删除B,再删除A; 1、删除B时的联合查询...
  • sql多表连接查询inner join, left join , right join ,full join ,cross join Posted on 2008-05-07 21:55 我开始懂了 阅读(21431) 评论(9) 编辑 收藏 inner join,full outer join,left join,right jion 内部连接 ...
  • 内连接左连接右连接 全外连接 
  • SQL语句多表联合查询

    万次阅读 2017-03-18 12:25:57
    本周之前,对于数据库的使用仅限于简单的增删改查(insert、delete、updata、select),而这一周由于工作需要,对一些sql函数、sql语句多表联合查询、T-SQL语句基本语法、存储过程编写等有了简单的学习,现将一周所...
  • sql 多表 34联合查询语句 对于 或者其中存在两个相同但是需要和不同的进行不同条件的;联合查询
  • 连接就是通过关联多张表,从而检索出需要的数据的方法,下面我们通过代码示例来学习一下sql连接使用方法
  • sqlserver 多表联合查询

    万次阅读 2019-04-03 16:53:16
    数据库查询时,对单查询很难满足需求,通常都需要多表联合查询多表连接大致分为内连接和外连接。 内连接和外连接的区别主要体现在返回数据上,内连接返回的是符合连接条件和查询条件的记录,外连接返回的...
  • 给坛友演示WinForm+SQL多表联合自定义查询SQL表结构见: http://bbs.csdn.net/topics/392297046
  • SQL语句多表关联查询语法

    千次阅读 2021-03-03 10:11:37
    **sql语句多表关联查询语法** 一、外连接 1.左连接 left join 或 left outer join SQL语句:select * from student left join score on student.Num=score.Stu_id; 2.右连接 right join 或 right outer join SQL...
  • SQL多表查询

    2018-11-11 19:56:03
    关于SQL多表查询练习,新手可以查看,附上代码和查询结果
  • sql 数据库表关联查询

    2015-06-29 10:12:16
    # sql表关联查询出的结果想再次约束(where)取出结果如何做,如下图,图为已取出的结果,想将 publiction_set_id 的值为null的数据提出,怎么做? ![图片说明]...
  • SQL语法(五) 多表联合查询

    万次阅读 多人点赞 2018-09-09 09:00:01
    当需要获取的数据分布在张中,考虑使用联合查询,本章将学习两种查询方式(sql92/sql99) 范例 1.笛卡儿积 将的数据进行一一对应,所得到结果为多表的笛卡尔积。结果的数量为所有的数量的乘积。 --...
  • SQLServer表关联查询

    万次阅读 2019-06-27 09:31:09
    SQL语句中,关于连接,若按照的数量来划分,可以划分为单连接、两连接和两以上连接,在本篇文章中,主要讲解两连接,其他多表连接原理一样。 关于连接有很种类,本文主要讲解交叉连接,内连接,...
  • 多表查询 多表连接基本查询 使用一张以上的查询就是多表查询。 语法: SELECT {DISTINCT} * | 列名 .. FROM 表名 别名,表名1 别名 {WHERE 限制条件 ORDER BY 排序字段 ASC | DESC .. .} 范例:查询员工...
  • $phql = " select order_id from Orderlogs a where a.created_at >= '$startTime' "; $phql = " select * from Orders where created_at >= '$startTime' and id in ($phql) "; $orders = $this->...
  • SQL语言多表关联查询

    千次阅读 2020-05-25 22:59:45
    (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个会有自己不同的主键。) 一、外连接 外连接可分为:左连接、右连接、完全外连接。 1、左连接 left join 或 left ...
  • sql多表关联语句

    2014-05-04 16:09:52
    sql server 数据库 多表关联查询语句

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 481,970
精华内容 192,788
关键字:

sql多表关联查询