新手提问:这样的查询如何写?

FoxLinn 2003-11-19 04:26:41
有2个表:
表A:ID NAME
001 张三
002 李四
003 王五
表B:ID DETAIL
001 开会
001 驾驶
002 休息
002 午饭
1、用select distinct ID from B 可以取得不重复的ID值,而select distinct ID,DETAIL from B 就不能取得不重复的ID值,为什么?
2、如何根据ID值取得表A 中的NAME?用一句语句,而且不能重复。
...全文
26 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-11-19
  • 打赏
  • 举报
回复
--查表B的所有内容,及表A的Name
select a.name,b.* from 表A a join (
select id,DETAIL=min(DETAIL) from 表B group by id) b on a.id=b.id



--如果只查Name,可以用:
select a.* from 表A a join (
select distinct id from 表B) b on a.id=b.id
zjcxc 元老 2003-11-19
  • 打赏
  • 举报
回复
1、用select distinct ID from B 可以取得不重复的ID值,
而select distinct ID,DETAIL from B 就不能取得不重复的ID值,为什么?

因为distinct的规则就是这样的,是对所有输出字段的组合判断是否重复,而不是针对一个字段.



2、如何根据ID值取得表A 中的NAME?用一句语句,而且不能重复。

select a.name,b.* from 表A a join (
select id,DETAIL=min(DETAIL) from 表B group by id) b on a.id=b.id
FoxLinn 2003-11-19
  • 打赏
  • 举报
回复
谢谢。
1、原来如此。有什么办法可以取唯一的ID值?不要重复的。
2、我不是这个意思。我的意思是:先通过外部条件,查询B,取得id,再查询A,取得name。name 不能重复。
txlicenhe 2003-11-19
  • 打赏
  • 举报
回复
1、用select distinct ID from B 可以取得不重复的ID值,而select distinct ID,DETAIL from B 就不能取得不重复的ID值,为什么?
只有ID和detail都相同的资料就算重复。
2、如何根据ID值取得表A 中的NAME?用一句语句,而且不能重复。
Select distinct b.id,a.name from b join a on a.id= b.id
wzh1215 2003-11-19
  • 打赏
  • 举报
回复
1.
select distinct ID,DETAIL from B是当ID与DETAIL都相同时才最一个。
2.
select distinct Name where id='002'

34,497

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧