sql查询:查询两张表的时候,左表的一条记录对应了右表的两条相同数据怎么显示一条记录?

例如:
a表

id name

1 张三

b表

id a_id

1 1

2 1

select a.*,b.* from a inner join b on a.id=b.a_id

怎么让查询出来的结果只有一条记录显示?

sql

7个回答

你要不就设置id为主键不可以重复 要不select 后面使用 distinct 关键字去重

qq_42136251
小白zx编程 回复luckyxs: 嗯嗯,谢谢您
7 个月之前 回复
Adorable_0623
luckyxs 回复小白zx编程: 嗯 也可以用group by 分组去重 只要能实现去重就行啦 =w=
7 个月之前 回复
qq_42136251
小白zx编程 回复:我刚才用这种方式加个group by 就可以
7 个月之前 回复
qq_42136251
小白zx编程 select a.name from b,a where a.id=b.a_id select a.name from b,a where a.id=b.a_id group by a.name
7 个月之前 回复

用left join试试

qq_42136251
小白zx编程 回复初冬灬淡愁彡: 嗯好,我去试试,谢谢您
7 个月之前 回复
u013404615
初冬灬淡愁彡 回复小白zx编程: 嗯,解决就好,也可以试试distinct去重
7 个月之前 回复
qq_42136251
小白zx编程 用left join还是能出来两条的,加上group by就可以了
7 个月之前 回复

select top 1 a.*,b.* from a inner join b on a.id=b.a_id

a表
id name
1 张三
b表
id a_id
1 1
2 1

select a.name from b,a where a.id=b.a_id 结果两条记录

select a.name from b,a where a.id=b.a_id group by a.name 一条记录

select a.name from b left join a on a.id=b.a_id group by a.name 一条记录

group by:group by一般用于对数据集进行分组然后多组内多行数据的其他字段进行比如计算行数,计算最大值最小值的操作

很简单,用distinct 语句就行了,

qq_42136251
小白zx编程 嗯嗯,distinct和group by 都可以实现的,谢谢您
7 个月之前 回复

图片说明

你的例子呢,我能明白你的意思,但是你的例子说明的还不全面。我相信你例子中的b表还有很多其他的字段。我大体和你说一下你还需要了解
的数据信息,才能真正实现目的。
你的a表可以确定,粒度就是就是你a表的id字段。你的b表粒度,肯定和a表不同,既然出现多条,我猜应该是比a表的粒度要小。
这就好比你的a表是学生的基本信息表,id类似于学号;而你的b表呢就相当于考试成绩表,里面不止有学号,还有各科对应的成绩,也就是说
一个学号会对应多条学科成绩。
所以,如果你想用学生的信息表(也就是你的a表)关联你的成绩表(b表),那么同样的,也是多条记录,因为关联完之后的数据就是一个学号
对应多科成绩了,是这样粒度的数据了。如果你想得到一条,那么肯定还需要其他的条件,比如说我只想要每个学生的语文成绩,那么你在b表
上限制条件,再关联,肯定就不是多条记录了。
所以,你还需要知道关于你b表,还有哪些条件限制的要求,如果b表里有时间类型的字段,会不会有取最大时间这样的限制?或者说是不是有
需要把每个id下面的某个指标sum?这样的要求,你还需要确认。

qq_42136251
小白zx编程 嗯嗯,了解了,谢谢您
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
查询一个表的一条记录
我想查询一分组记录的全部记录;rn比如:select max(score) from students group by name;rn这只能查出max(score)的值,但我想查询此记录的其他字段的值,请问该如何做?rn
SQL查询少了一条记录
$sql=mysql_query("select * from t where gameid=$id order by id desc");rn$info=mysql_fetch_array($sql);rnrndornrnrnecho "$info->id";rnecho "$info->name;rnrnrnwhile($info=mysql_fetch_object($sql));rnrnrnrn不管查什么都是少一条记录,不知道怎么回事,大家帮忙看下代码
sql 在多个表中查询一条记录
小弟刚刚研究这个SQL存储过程很久了,rn 这个数据库中有很多的表名字是以USB开头的,表USB1th、USB2th、USB3th........USB45th,每一个表都是存储的U盘上面的料号,每增加一批U盘都会添加一个表。这些表的字段名字、数据类型、长度都是一样的。详细信息见图。rn 现在想通过一个存储过程查询这个“100000-B22”料号,查询到在那个表中、它的光盘大小(ISO_GB),MD5(Check_MD5)、光盘类型(ISO_Type)、MD5校验结果(Result)。这个存储过程应该如何创建?PS:我的这个数据库比较小,只有10MB左右。rnrnrn[img=https://img-bbs.csdn.net/upload/201509/21/1442808260_175386.png][/img]
sql同一张表复制一条相同的记录
id为主键,自增列 SET IDENTITY_INSERT Test On insert into Test ([id] ,[NameCN] ,[NameEN] ) select (select top 1 Id from Test order by id desc)+1, [NameCN] ,[NameEN] from Test where id='1' SE
怎么把两条记录通过一条sql 查询出来?
如:表Arnrn用户名 动作时间 动作名称 rnrn123 2012-07-23 开通服务rn123 2012-07-24 停止服务rnrn怎么把数据查出来rnrn用户名 开通时间 停止时间rn123 2012-07-23 2012-07-24
php查询一条记录!
我现在要写一个查询语句,但是不知道什么获得他结果返回到htm前台去显示。rn代码是这样写的:rn$dbh=mysql_connect('localhost','root','');rnmysql_select_db('dedecmsv53utf8');rn$mysql="select username from dede_member where mid='$cookie'";rn$result=mysql_query($mysql);rn现在我在htm里面有一个文本框来显示username 的值。但是不知道什么写,请指点一下。还有就是如果我查询多条语句的话,该用什么来接收然后在htm显示出查询结果?要是用下拉框来显示那又该项什么写呢?rnrn谢谢!
如何查询一条记录?
表Arnid name nd sj gzrn01 李强 2007 01 2000rn01 李强 2007 02 1950rn01 李强 2007 03 2102rn02 刘勇 2007 01 2002rn.....rnrn如何查出以下结果:rnid name nd sj gzrn01 李强 2007 03 2102
sql 查询第一条记录,和最后一条记录。
查询第一条记录,和最后一条记录。rn谢!谢!
怎样查询一条记录
sql="select * from wuliu where siji_name='"+m_sName+"'";
两条记录合并一条的 sql
select          eu.ID, eu.UID, eu.ID_NO, eu.USER_NICK, eu.USER_NAME, eu.PWD_DIGEST, eu.PWD_SALT, eu.SEX,EMAIL, eu.PHONE, eu.STATUS, eu.USER_TYPE, eu.REG_SRC_ID, eu.USER_LOC, eu.GMT_BIRTH,
紧急求助查询相同记录的某一条
A1 A2 A3 A4 A5rn 482 2011-05-27 1895 1 111111rn 482 2011-05-27 1894 2 777rn 482 2011-05-27 1894 1 997rn 482 2011-05-27 1893 1 99.99rn 482 2011-05-27 1891 1 99998rn 2154 2011-05-26 1890 1 1099rn 2154 2011-05-26 1889 1 9999rn 2154 2011-05-25 1839 1 100rn 482 2011-05-25 1887 1 9999rn 723 2009-12-10 1879 1 0.12rn 723 2009-12-10 1879 2 0.5rnrn 请问如何查询出不同的A1 取A2 最大的值,当A2相同时取A3最大,当A3也相同时取A4 最大的值最后结果是rnA1 A2 A3 A4 A5rn482 2011-05-27 1895 1 111111rn2154 2011-05-26 1890 1 1099rn723 2009-12-10 1879 2 0.5
两条记录,取一条
testrnrn字段名rnaa bb cc ddrn值rna1 b1 12 2rna1 b1 16 1rnrn只想两条记录中的任何一条rna1 b1 12 2rn或rna1 b1 16 1
SQL查询当前数据上一条和下一条的记录
SQL查询当前数据上一条和下一条的记录,管用,仅供参考!!!
SQL查询当前数据上一条和下一条的记录(转)
where news_id > " + id + " order by news_id ASC" 方法二: string preSql = "select * from [news] where news_id = (select MAX(news_id) from [news] where news_id<"+ id + ")";string nextSql = "select * from [
SQL查询当前数据以及上一条和下一条三条记录
想查询某个表当前数据以及上一条和下一条的记录,网上找了一下解决办法都不如意,按网上的方法可以查询出三条数据,但是当查询的这条数据没有上一条或下一条记录时就不行了。现在我把解决问题的sql语句放上 : 理一下思路,明确的查询三条语句:SELECT * FROM 表名 WHERE id IN(当前id的前一个id值,id值,当前id的后一个id值) 在这里说一下为什么是“当前id的前一个id值”而
如何获取SQL查询当前数据上一条和下一条的记录
rnID是uuid字符串型的,怎么获取rnrn
一条记录对应多条记录,两表联查
这是第一张表A:rn[img=D:\2.gif][/img]rn这是第二张表B:rn[img=D:\1.gif][/img]rn两张表的b_code是对应的,现在两表联查,要求结果中计算B表当b_date为null时,对应b_money求和为 x 列,当b_date不为null时,对应b_money求和为 y 列.得列如下rnrnb_code x y b_sumrnrn328 675 107337.30 108012.30rnrn请高手回答,没分了,实在不好意思,急!!!!rnrn
MSSQL怎样将查询的每一条记录显示成两条?
MSSQL怎样将查询的每一条记录显示成两条?比如:rn表A:rnA01 A02 A03rn--------------rn1 2 3rn11 22 33rn..rnrnselect * 想要得到这个效果?rn1 2 3rn1 2 3rn11 22 33rn11 22 33rn...
MySQL 两条记录合并查询成一条显示
数据库数据如下   张三,属于A部门也属于B部门,在表里存的是两条记录,但是在页面上我想要根据人来显示,在一条记录里显示张三属于A部门和B部门,张三只显一条记录,不显示两条。 SELECT t.id, t.CODE, t.NAME, MAX(CASE t.type WHEN 'A' THEN t.dept_name ELSE null END) dept1, MAX(CASE...
Sql查询相同记录
在表info中有这样几条记录rnID namern1 成长信息rn1 查看信息rn2 编写日记rn2 查看日记rn3 上传照片rn3 照片列表rn我现在是用adodc连接access表inforn怎样才能把ID字段中的相同记录给筛选出来rn用sql该怎样写,在线等,rn我要在listview上只显示ID为1或ID为2的相同记录
SQL 相同记录查询
现有表 T ,字段 A ,Brn 序号 A Brn 1 1 2rn 2 1 3rn 3 2 4rn 4 2 4rn 5 3 5rn 6 4 5rnrn怎样把序号为 3 和 4 的查询出来? 谢谢! 等高手解决! 条件就是a和b同时相等的记录取出来。
同一张表联表查询 返回至少一条记录
+------+-----------+-------------+-------------+---------------+------+-----------+-------------+-------------rn| id | attend_id | attend_time | attend_type | ip | id | attend_id | attend_time | attend_type | ip |rn+------+-----------+-------------+-------------+---------------+------+-----------+-------------+-------------rn| 1465 | 733 | 09:00:00 | 2 | 192.168.0.112 | 1465 | 733 | 09:00:00 | 2 | 192.168.0.112 |rn| 1465 | 733 | 09:00:00 | 2 | 192.168.0.112 | 1466 | 733 | 18:00:00 | 4 | 192.168.0.112 |rn| 1466 | 733 | 18:00:00 | 4 | 192.168.0.112 | 1465 | 733 | 09:00:00 | 2 | 192.168.0.112 |rn| 1466 | 733 | 18:00:00 | 4 | 192.168.0.112 | 1466 | 733 | 18:00:00 | 4 | 192.168.0.112 |rn+------+-----------+-------------+-------------+---------------+------+-----------+-------------+-------------rn上面的记录是这条语句返回的,rn select * from record r1 left outer join record r2 on(r1.attend_id=r2.attend_id) where r1.attend_id=733 ;rnrn我想要的结果是 如果有attend_type 不一样的记录 就返回 第二条或者第三条记录一样 结果 ,如果有attend_type 都是一样的就 返回一条记录 , attend_type 是 唯一的
怎么查询相同的记录
表中符合条件的只有一条记录。rn但我要这条记录重复出现10行,select语句怎么写rn以前写过的,现在忘了。rnrn谢谢
用一条sql语句查询两张表中的数据
A表和B表数据结构一样,没有主外键关系 要根据一个字段查询这个两个表的数据rn我用了left join 不行 数据时两表相乘的(因为没有主外键关系 )
想查询某表的最后一条记录,sql怎么写?
现想查订单表中的最后一条记录,sql怎么写?rnpsrn往订单表中添加了一条记录,订单表中的订单ID为ACCESS自增字段,添加完后又要往订单明细表中添加记录而添加记录的订单ID就是前面添加订单的订单ID,请问有什么好的办法知道前面添加的自增字段的值。我的想法是前面添加的订单一定是订单表中的最好一条记录,那么再执行一次查询将订单表中的最后一条记录的订单ID取出。rn注:添加记录,查询均用connection对象excute方法的动作查询!
联表查询 取一条记录
情况是这样的,两张表……rnrn产品表 tb_productrnp_code(产品代号) p_status(状态)rn111 7rn222 8rn333 9rn此表p_code唯一,没有重复rnrn使用情况表 tb_usemodernu_code(产品代号) u_status(状态)rn111 1rn111 1rn222 3rn222 2rn333 0rn此表u_code有重复,u_status也有重复 rnrn如何联表查询出:rntb_product中p_status=8或tb_usemode中u_status=1的所有不重复记录rn就是产品代号不能重复。rnrn得到的结果应该是这样的rnp_code u_code p_status u_statusrn111 111 7 1rn222 222 8 2(3)rnrn如果u_status有两条,取其中一条即可。rnrn谢谢各位,费心了。
sql查询上一条数据和下一条数据
id必须为自增长 select top 1 * from 表名 where ID>id order by  ID asc 下一条 select top 1 * from 表名 where ID
PHP查询记录只有一条
本人新手:rn $sort=mysql_query("select classes_name from classes order by id");rn $classes=mysql_fetch_array($sort);rn [color=#800000]print_r($classes).' ';[/color]rn打印输出数组也只有一条记录,但是数据库中有好几条,这是这么回事?
急~~~~~查询各公司的一条记录
举列子表:id,com_id,product_idrn 1,1001,2001rn 2,1001,2002rn 3,1001,2003rn 4,1002,2004,rn 5,1002,2005rn 6,1003,2008rn需要把各公司都取出来,并且只取一条产品信息的,结果比如:rn 1,1001,2001rn 5,1002,2005rn 6,1003,2008rn要求是sql语句搞定,不要存储过程,游标啥的,rn谢谢各位大侠,重分答谢,急~~~~
hibernate查询一条记录的问题?
能不能只写一个方法就能对所有表做单条记录的查询!(建议者有分!)
为何只查询到一条记录?
productshow1.asp:rn<% dim zsamllclassnamern rn zsamllclassname=trim(request("scm"))rn rn set rs=server.CreateObject("adodb.recordset")rn sqltext="select * from product where SmallClassName='" & zsamllclassname & "'"rn rs.Open sqltext,conn,1,1rn if rs.bof and rs.eof thenrn response.write " "rn response.endrn end ifrn %>rnrn分别用rs("")取出值放在所需的地方..rnrn为何只得到一条记录?(我的数据库SmallclassName)中有几条记录啊!
thinkphp查询一条记录(find)
$delivery = D('Delivery')-&amp;gt;where(array('user_id' =&amp;gt; $do['delivery_id'])) -&amp;gt;find();
如何查询合并一条记录。
我有表 Pointrn------------------------rnid | point1 | point2|rn------------------------rn1 | 2.23 | null |rn------------------------rn1 | null | 4.34 |rn------------------------rn2 | null | 3.34 |rn------------------------rn2 | 4.34 | null |rn------------------------rnrn现在我想查询合并id相同的记录,已知表中有每两条记录的id相同,其中一条记录的point1为空,另一条记录的point2为空,我想的到的结果是这样 1,2.23,4.34 和 2,4.34,3.34 应该怎么样写sql语句,求解答。谢谢。
如何查询符合条件的一条记录?
有表A,表Brnrn表Arnrnid namern01 张国英rn02 李丽华rn03 郭凤英rn04 王勇rn.....rnrn表Brnid nd sj gz bmrn01 2006 10 2000 工程部rn01 2006 11 1950 工程部rn01 2006 12 1950 工程部rn01 2007 01 1950 财务部rn01 2007 02 1950 财务部rn01 2007 03 2100 财务部rn01 2007 04 2105 财务部rn02 2006 12 3000 工程部rn02 2007 01 3006 工程部rn02 2007 02 3016 工程部rn02 2007 03 3006 财务部rn02 2007 04 3126 财务部rn02 2007 05 3231 财务部rn03 2007 01 2201 工程部rn03 2007 02 2226 工程部rn03 2007 03 2246 人事部rn03 2006 12 2210 企划部rn04 2007 02 1900 工程部rn04 2007 03 2000 财务部rn...rn想求出2007年03月份财务部的工资总额及明细.结果如下rnrnid name nd sj gz bm rn01 张国英 2007 03 2100 财务部rn02 李丽华 2007 03 3006 财务部rn04 王勇 2007 03 2000 财务部rn.....rnrn合计 7106rnrn如何用SQL语局查询得到以上结果,谢谢!rn
Mysql 查询最大一条记录
如:有下面记录.rnID | userID | name | Telrn1. 3345 AAA 123rn2. 3345 BBB 123rn3. 3345 CCC 123rn4. 4444 QWE 123rn5. 4444 TRE 123rn6. 4444 ASD 123rnrn怎么查出userID一样的记录中,ID最大的一条记录?(可用MAX())rnrnrn
查询最后一条记录的问题
我的查询条件如下:rnselect distinct b.dj from a_rkdt a,a_rkdd b where a.lsh=b.rkdtlsh and wzlsh=13729rn and a.jssj=(select max(jssj) from a_rkdt a,a_rkdd b where a.lsh=b.rkdtlsh and wzlsh=13729)rn记录结果有多条rn问题一:如何查询到最后一条记录?rn问题二:如果求平均数怎么做?
07ResultSet接口查询一条记录
JDBC连接数据库是Java系列技术中数据库知识的核心技术,是学习后续课程JavaWeb入门前需要掌握的基础! 这门课的前导课是《Java系列技术之Mysql》。
c# 按查询一条记录
现在做一功能,按月查询最后一条记录后与上月最后一条记录相应字段进行相减,算出每月用量。但存在一此特殊情况,比如1、本月没有匹配记录,我做的处理为设为本月相应字段用量为0;rn2、本月有匹配记录,但上月无匹配记录,我做的处理为,取小于当前月的最后一条记录,进行运算,rn问题是:rn 但上面每二条方法在本年内有记录的情况下是正确。但一直查上月无匹配记录,一直到1月一直都没有的话,此不会取上年的最后一条记录,所以计算数据是错。rn 如果解决。我的取上月的sql语句都是这样写的:rnselect top 1 * from waterDatasMonth where Name='0'and year(time)='1'and month(time)<'2'order by time desc",Name,dts,i); 其中dts为年时间,i为for循环,以取每个月的记录rnrnrn谢谢!rn
RIA Services 查询一条记录
[code=C#]rn RIADemoContent content = new RIADemoContent();rn var list = from p in content.Articles where p.ArticleID == 5 select p;rn foreach(var obj in list)rn rn this.label1.Content = obj.ArticleTitle;rn rn[/code]rnrn为什么这样写没有结果 我确定数据库里是有id=5的那条记录的 找了下RIA的例子都是查询一张表的 也没个条件查询的例子 我linq不太会 是不是有上面问题 多谢帮忙下
oracle 查询最后一条记录
select * from(  select        j.ndate as ndate,       j.customer,       sum(j.amount) as sumAmount,       row_number() over(order by j.pid desc) rn  from        income.jk_debt j,       dic.jk_dic_mone
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法

相似问题

2
左表关联右表 返回左表所有 右表匹配不到左表的返回空
1
关于用model去接收sql查询的结果
16
SQL 如何从两个表提取字段,合成一个表【如图】
15
mysql 查询每个分类的第一条数据 应该怎么写
5
sqlserver数据库,查询某条记录的上一条,修改并保持
3
SQL查询一个表中某个字段值与另一个表中字段值相同的记录
6
SQL查询一个表中某个字段值第一个不连续的记录
2
SQL问题:查询所有生产工单最后是由哪条生产线哪一天生产的并显示当天的产量
7
sql 问题 一条sql进行查询拼接
1
一条数据同时插入3张表如何实现。
2
sql server 如何同时查询出 表内的第一条数据 和最后一条数据
2
kettle中有源表和目标表,两个表的表输入的查询中的表名是一个变量,如何让源表中的数据更新到目标表中?
2
将不同库的两张表进行联合查询
2
SQL查询两张表的数据,优先查A表。没有就查B表?
1
oracle 10g两张表结构一模一样的表,执行相同查询效率相差很大,原因是什么?
1
mybatis 根据第一条sql语句查询的结果决定是否第二次查询?
0
想用python 读取sqlserver的一个表,然后将每一行记录都按照一定的格式写入到同一个txt文件
3
MySQL 如何仅用一条SQL语句或存储过程或自定义函数 判断两条记录之间是否存在层级关联
1
sqlserver 执行SQL异常:从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值
2
SQL语句多数据的跨天查询问题