请大虾指教下面的SQL语句怎么写,万分感谢!!
来源:百度知道 编辑:UC知道 时间:2024/06/25 18:56:19
现在有两个表
表1: {学生ID 学生名} (学生ID从1到10,10个学生)
表2: {学生ID 联系电话} (联系电话字段包含所有此学生的联系方式)
假设学生ID=2的学生家有两个固定电话号码(假设而已)并且该学生有两个联通的手机和一个移动的手机,那么在表2中该学生的信息以以下的方式记录
学生ID 联系电话
2 固话号码2
2 联通号码1
2 移动号码
2 联通号码2
2 固话号码1
--------------------------------------表的描述完毕,下面提问
如何选出10名学生(全部学生)在表2中的第一个电话号码(不论号码是移动的,还是联通的,还是固话的,只选出第一个而已)。
请教sql语句怎样写,谢谢
表1: {学生ID 学生名} (学生ID从1到10,10个学生)
表2: {学生ID 联系电话} (联系电话字段包含所有此学生的联系方式)
假设学生ID=2的学生家有两个固定电话号码(假设而已)并且该学生有两个联通的手机和一个移动的手机,那么在表2中该学生的信息以以下的方式记录
学生ID 联系电话
2 固话号码2
2 联通号码1
2 移动号码
2 联通号码2
2 固话号码1
--------------------------------------表的描述完毕,下面提问
如何选出10名学生(全部学生)在表2中的第一个电话号码(不论号码是移动的,还是联通的,还是固话的,只选出第一个而已)。
请教sql语句怎样写,谢谢
select a.学生名,b.联系电话 from 表1 a inner join (select 学生ID,min(联系电话) as 联系电话 from 表2 group by 学生ID) b on a.学生ID=b.学生ID
回答者:lazy67 - 高级经理 七级 7-30 13:14
这个查出来是联系电话最小的那个 而不是第一个
如果利用ROWID机制的话对上面SQL进行一些改动:
SELECT A.学生名,B.联系电话 FROM 表1 A,表2 B
WHERE A.学生ID = B.学生ID AND B.ROWID IN (SELECT MIN(ROWID) FROM 表B GROUP BY ID)
我手边只有ORACLE 10G 测试成功
不知道是不是所有数据库都有ROWID机制
select a.学生名,b.联系电话 from 表1 a inner join (select 学生ID,min(联系电话) as 联系电话 from 表2 group by 学生ID) b on a.学生ID=b.学生ID
SELECT 学生ID,
(SELECT TOP 1 联系电话 FROM 表2 WHERE 学生ID = A.学生ID)
FROM 表1 A
select * from 表2 as a
where 联系电话 =(select top 1 联系电话 from 表2 where 表2.ID=a.ID )
我写这个肯定对。试试吧。就是不知道你用的是什么数据库。