SQL 一对多表关联查询

select*fromtable1awhereexists(selectnamefromtable2wheretable2.name=a.name)以上语句只取出符合条件... select * from table1 a where exists (select name from table2 where table2.name=a.name )
以上语句只取出符合条件table1的所有字段,如果想关联出table2的某一段,怎么写?谢谢
Sonicscorpop,谢谢
table1与table2是一对多的关系,我只要取table2中一笔(日期最大的那笔)
展开
 我来答
sonicscorpio
2007-08-10 · TA获得超过245个赞
知道答主
回答量:108
采纳率:0%
帮助的人:165万
展开全部
补充:

....这个,感觉楼主的语句不用写成这样诡异的,你可以试试下面的语句符不符合你的要求
select * from table1 a,table 2 b where a.name=b.name;
这样不就行了么??

可以给多一点信息么??具体你想返回什么呢??
是这样么?

table1符合的记录字段 table1所对应的很多table2
的中的一个记录 字段
** ++++++
** ++++++
** ++++++
** ++++++

如果是这样的话,table2应该是存储有关交易的信息的吧,那么应该有一个唯一标识的编号,类型为数值,越新的记录,编号越大,设这个编号为id 那么可以用以下方法,达到你想要的效果

select * from table1,table2 where table2.id in (
select max(id) from table2 group by name) and table1.name
=table2.name;

强烈建议不要使用日期字段作唯一标识,如果没有以上所说的id列,会麻烦许多
jmsjwh
2007-08-17 · 超过16用户采纳过TA的回答
知道答主
回答量:122
采纳率:0%
帮助的人:0
展开全部
select * from table1 a,table 2 b where a.name=b.name;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
doncuy
2007-08-17 · 超过10用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:0
展开全部
select * from table1 a where exists (select name,max(datefield) from table2 where table2.name=a.name )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式