如何用SQL语句实现相同列值只取第一行?

SQLSERVER中有表如下电话公司电话1a电话2a电话3a电话4b电话5b电话6b电话7b电话8c电话9c一个公司可能有多部电话,现在要查公司电话,求一个公司只要一部电... SQL SERVER中有表如下
电话 公司
电话1 a
电话2 a
电话3 a
电话4 b
电话5 b
电话6 b
电话7 b
电话8 c
电话9 c
一个公司可能有多部电话,现在要查公司电话,求一个公司只要一部电话就行了(哪一部都行),怎么用SQL语句实现啊?毕业太久了,忘光了,谢谢各位大侠了!!
展开
 我来答
baiynijecym
2012-11-19 · TA获得超过1841个赞
知道大有可为答主
回答量:1411
采纳率:66%
帮助的人:1171万
展开全部
最好能给出示例数据,和想要的结果。
可以如下:

select * from table a where 电话= (select min(电话) from table b where a.公司 = b.公司)


select * from table a where not exists(select * from table b where a.公司 = b.公司 and a.电话 > b.电话)
万成云
推荐于2018-03-23 · TA获得超过158个赞
知道小有建树答主
回答量:94
采纳率:0%
帮助的人:87.6万
展开全部
oracle中select title, type from a where rowid = (select max(rowid) from a b where b.title = a.title);其中a b指的是同一个表的别名
追问
我补充了一下,麻烦你再给看看,用的是SQL SERVER 2005
追答
WITH mycte AS(
SELECT ROW_NUMBER() OVER( ORDER BY 公司) NO, 电话, 公司 FROM #test)
SELECT 电话, 公司 FROM mycte WHERE NOT EXISTS (
SELECT 公司 FROM mycte sub WHERE mycte.公司 = sub.公司 AND mycte.no >
sub.no );
其中#test为表名,mycte、sub为#test的别名,其中用到了ROW_NUMBER() OVER和NOT EXISTS函数,这条是可以实现你要效果
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式