有表一 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的记录,那么按我的要求只有前一条被提取。请高手帮忙
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的记录,那么按我的要求只有前一条被提取。请高手帮忙
解决方案 »
- 插入有规律数据?菜鸟求助!
- left join 缺省值
- mysql 修改全表ID 字段从10000开始
- MYSQL 忘记密码,用CMD命令进去后改了密码,结果MYSQL无法启动了,求救~193错误
- 多表查询
- mysql触发器的一个问题
- 从不同的表读取数据的存储过程如何写
- 请问关于如何同时对两个数据库进行操作的问题????急噢...
- mysql用函数如何实现oracle connect by nocycle prior类似的功能
- 经常听说一些十万级,百万级数据库,请问这个十万级,百万级是指的什么?
- 请问一个关于多次left join 同一个表的问题
- 为什么MySQL-Front无法连接到mysql
十一快乐!
谢谢您的帮忙,但是这可能不是我要的答案,因为这样写的话,的确是只能得到一条记录——可能我说的不够清楚,我想要的结果应该是下面的样子的:tid username title time txt
1 lily 我公司将进行xx培训 0809 大家快来。
2 angus 关于秋游的通知 0810 我是新来的,大家好 <------这里取的是表二即tableB中符合条件的两项中的第一项。我就是不会这儿
3 boss 这个月不发奖金 (空,因为tableB中无对应项)
4 vivi 新产品上市 0811 价格太贵啦
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.tidquery result
tid username title time txt
1 lily 我公司将进行xx培训 0809 大家快来。
2 angus 关于秋游的通知 0810 我是新来的,大家好
3 boss 这个月不发奖金
4 vivi 新产品上市 0811 价格太贵啦
这样应该好理解吧?
中午我又试了一种方法,成功了。写出来请大侠看看有没有效率上的问题(已经能达到我要的效果了,只是我怕有不妥当的地方)
另外,很感谢大侠的帮忙。您给出的方法我现在就试试看。我自己的笨办法是:
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 价格太贵啦
只是小妹不明白为什么ifnull(b.time,'')as time ifnull(b.txt,'')as txt 的原理,能解释一下吗?谢谢
的SQL执行了下,提示 ORA-00979