如何取得left join的第二表中符合条件的第一条记录?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何取得left join的第二表中符合条件的第一条记录?相关的知识,希望对你有一定的参考价值。
有表一 tableA
tid username title
1 lily 我公司将进行xx培训
2 angus 关于秋游的通知
3 boss 这个月不发奖金
4 vivi 新产品上市
表二 tableB
tid time txt
1 0809 大家快来。。。。
2 0810 我是新来的,大家好
2 0810 我知道你是新来的。。。
4 0811 价格太贵啦。。。
我想取得相同tid下的tableA的title跟对应的tableB中符合条件的第一条txt记录结合起来使用
我用以下语句达不到效果
SELECT tableA.*, tableB.txt FROM tableA LEFT JOIN tableB ON tableA.tid = tableB.tid ORDER BY tableB.time DESC
注意:上面的tableB中有两条tid为2的记录,那么按我的要求只有前一条被提取。请高手帮忙
用是mysql
用left join 没问题,问题是当tableB中符合ON条件的项超过一项时,该如何实现只取第一条去与tableA匹配
另外LEFT JOIN会把A中有B中没有的也全部显示出来啊,B没的字段用NULL表示。
你用的什么数据库,MSSQL的话是不是表A,B里面字段有text类型引起的~瞎猜了。 参考技术B text类型真是强大啊引起无数问题- -我打死都不用他
Sql_join left right
1、内连接inner join
只返回两张表中所有满足连接条件的行,即使用比较运算符根据每个表中共有的列的值匹配两个表中的行。(inner关键字是可省略的)
①传统的连接写法:
在FROM子句中列出所有要连接的表的名字(进行表别名),以逗号分隔;
连接条件写在WHERE子句中;
2、外连接outer join
使用外连接不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。
在MySQL数据库中外连接分两类(不支持全外连接):
左外连接、右外连接。(outer关键字可省略)。
共同点:都返回符合连接条件和查询条件(即:内连接)的数据行
不同点:
①左外连接还返回左表中不符合连接条件,但符合查询条件的数据行。(所谓左表,就是写在left join关键字左边的表)
②右外连接还返回右表中不符合连接条件,但符合查询条件的数据行。(所谓右表,就是写在right join关键字右边的表)
①先连接后过滤
select ……from ……
left join ……
on 连接条件
where 过滤条件;
②先过滤后连接
select ……from ……
right join ……
on 连接条件
and 过滤条件;
3、交叉连接—笛卡尔积
因为没有连接条件,所进行的表与表间的所有行的连接。
特点:
①连接查询没有写任何连接条件
②结果集中的总行数就是两张表中总行数的乘积(笛卡尔积)
注意:在实际中,应该要避免产生笛卡尔积的连接,特别是对于大表:
select * from stu,tea,course,xuanke;
分组SELECT的基本格式:
select [聚合函数] 字段名 from 表名
[where 查询条件]
[group by 字段名]
[having 过滤条件]
1、group by子句
根据给定列或者表达式的每一个不同的值将表中的行分成不同的组,使用组函数返回每一组的统计信息
规则:
①出现在SELECT子句中的单独的列,必须出现在GROUP BY子句中作为分组列
②分组列可以不出现在SELECT子句中
③分组列可出现在SELECT子句中的一个复合表达式中
④如果GROUP BY后面是一个复合表达式,那么在SELECT子句中,它必须整体作为一个表达式的一部分才能使用。
4、HAVING子句:对分组结果进行过滤
注意:
不能使用WHERE子句对分组后的结果进行过滤
不能在WHERE子句中使用组函数,仅用于过滤行
因为WHERE子句比GROUP BY先执行,而组函数必须在分完组之后才执行,且分完组后必须使用having子句进行结果集的过滤
!!!having子语句与where子语句区别:
where子句在分组前对记录进行过滤;
having子句在分组后对记录进行过滤
1)HAVING可以单独使用而不和GROUP BY配合,如果只有HAVING子句而没有GROUP BY,表中所有的行分为一组
2)HAVING子句中可以使用组函数
3)HAVING子句中的列,要么出现在一个组函数中,要么出现在GROUP BY子句中(否则出错)
以上是关于如何取得left join的第二表中符合条件的第一条记录?的主要内容,如果未能解决你的问题,请参考以下文章