如何取得left join的第二表中符合条件的第一条记录?

vivianhqy 2008-09-28 08:01:36
有表一 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的记录,那么按我的要求只有前一条被提取。请高手帮忙

...全文
2505 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tsukinoying 2011-08-18
  • 打赏
  • 举报
回复
学习学习,我也碰到了这个问题
wbgeng 2010-09-29
  • 打赏
  • 举报
回复
yueliangdao0608
的SQL执行了下,提示 ORA-00979
goingon99 2010-04-13
  • 打赏
  • 举报
回复
have a lokkkkk
vivianhqy 2008-09-30
  • 打赏
  • 举报
回复
大家帮帮忙看看啦,谢谢啦
vivianhqy 2008-09-30
  • 打赏
  • 举报
回复
刚刚试了yueliangdao0608大侠的方法,的确是行的,而且很清晰,代码也短。所以结贴了,大侠的答案100分。
只是小妹不明白为什么ifnull(b.time,'')as time ifnull(b.txt,'')as txt 的原理,能解释一下吗?谢谢
vivianhqy 2008-09-30
  • 打赏
  • 举报
回复
是说的有点乱,但目的就是达到以left join的左表为主,取右表的匹配项结合使用。其中右表符合条件的项可能不只一个,当不只一个时就按时间取第一个匹配项。
这样应该好理解吧?
中午我又试了一种方法,成功了。写出来请大侠看看有没有效率上的问题(已经能达到我要的效果了,只是我怕有不妥当的地方)
另外,很感谢大侠的帮忙。您给出的方法我现在就试试看。

我自己的笨办法是:
select a.*, b.txt,b.time from tableA. as a left join ( select tid min(time)from tableB group by tid limit 20) as b on a.tid = b.tid
得出:
tid username title time txt
1 lily 我公司将进行xx培训 0809 大家快来。。。。
2 angus 关于秋游的通知 0810 我是新来的,大家好 <------这里取到了表二中符合条件的两项(或更多)中的第一项。难点解决了。
3 boss 这个月不发奖金 (空,因为tableB中无对应项)
4 vivi 新产品上市 0811 价格太贵啦。。。
懒得去死 2008-09-30
  • 打赏
  • 举报
回复

select a.*,
ifnull(b.time,'') as time,
ifnull(b.txt,'') as txt
from tableA as a
left join tableB as b
on a.tid = b.tid
group by a.tid
order by a.tid



query result
tid username title time txt
1 lily 我公司将进行xx培训 0809 大家快来。。。。
2 angus 关于秋游的通知 0810 我是新来的,大家好
3 boss 这个月不发奖金
4 vivi 新产品上市 0811 价格太贵啦。。。
lupanlupan 2008-09-29
  • 打赏
  • 举报
回复
SELECT tableA.*, tableB.txt FROM tableA LEFT JOIN tableB ON tableA.tid = tableB.tid ORDER BY tableB.time DESC limit 1;
十一快乐!
vivianhqy 2008-09-29
  • 打赏
  • 举报
回复
也就是说,并非只取符合条件的第一条联合查询后的结果,而是取10条 20条等等,只是当tableB中符合ON条件的项超过1条时,只取第一题去与tableA匹配输出联合查询的结果
vivianhqy 2008-09-29
  • 打赏
  • 举报
回复
谢谢,十一快乐!
谢谢您的帮忙,但是这可能不是我要的答案,因为这样写的话,的确是只能得到一条记录——可能我说的不够清楚,我想要的结果应该是下面的样子的:

tid username title time txt
1 lily 我公司将进行xx培训 0809 大家快来。。。。
2 angus 关于秋游的通知 0810 我是新来的,大家好 <------这里取的是表二即tableB中符合条件的两项中的第一项。我就是不会这儿
3 boss 这个月不发奖金 (空,因为tableB中无对应项)
4 vivi 新产品上市 0811 价格太贵啦。。。

本文基于中国A股上市企业数据,分析了逻辑型和学习型AI技术应用对企业创新的影响。通过机器学习生成AI词典并分析年报文本,测量AI应用水平。研究发现,AI应用通过增加知识多样性、打破组织惯例和提高资源配置效率促进企业创新,且企业的吸收能力增强了这一促进作用 参照李玉花(2024)的做法,团队对来自中国工业经济《人工智能技术应用如何影响企业创新》一文中的基准回归部分进行复刻 团队将原文数据更新至2023年,并对基准回归进行复刻。数据年份为2007-2023年,包括原始数据、处理dofile,基准回归代码 一、数据介绍 数据名称:人工智能技术应用如何影响企业创新 数据范围:A股上市公司 数据年份:2007-2023年 有效样本:33615条 数据说明:参考《管理世界》中姚加权(2024)的做法,测算人工智能水平 内含原始数据、dofile和基准回归 二、数据指标 股票代码 股票简称 年份 省份 城市 区县 省份代码 城市代码 区县代码 行业代码 行业名称 企业上市年龄_年 是否ST或金融类 总资产_万元 营业收入增长率_% 资产负债率_% 总资产收益率_% 研发投入占营业收入比例_% 人工智能词频和 人工智能词频和加1取对数 企业专利申请总量 企业发明专利申请量 企业专利授权总量 企业发明专利授权量 三、参考文献 李玉花,林雨昕,李丹丹.人工智能技术应用如何影响企业创新[J].中国工业经济,2024,(10):155-173.

57,063

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧