请大虾指教下面的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语句怎样写,谢谢

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 )

我写这个肯定对。试试吧。就是不知道你用的是什么数据库。