这个简单的SQL如何写?(20分)

  • 主题发起人 主题发起人 dazzling
  • 开始时间 开始时间
D

dazzling

Unregistered / Unconfirmed
GUEST, unregistred user!
只有一个表A,里面有多个字段,比如F1,F2,F3...FX
现有F1,F2,F3的值相同的记录N条,但我只想得到其中一条,
如何做? 要求效率要高
 
这你都想得同来,你要得到其中一条也有什么条件吧。[:(!]
 
[:(]异想来也。。
 
f1,f2,f3值相同???到底哪种相同说清楚,
1,是某一个字段的值 有重复,
2,是三个字段同时重复
3,是f1=f2=f3 这样的数据

先把问题说清楚了.应该不会很难.
 
select distinct f1,f2,f3 from A
 
select distinct f1,f2,f3 from A
 
下面的语句可以:
select f1,f2,f3,min(f4) as f4,min(f5) as f5,min(fx) as fx..
from table
where ...
group by f1,f2,f3
 
SELECT DISTINCT F1, F2, F3...Fx
FROM TABLE1
这样试试吧
 
select distinct f1,f2,f3 from A 不用试,这样写肯定可以
 
三个字段的值分别与其它记录相应值相等.

我得到的结果还要包括其它字段值F4,F5....FX等.
 
select f1,f2,f3,min(f4) as f4,min(f5) as f5,min(fx) as fx..
from table
where ...
group by f1,f2,f3
楼主没试过?oracle里是行的
 
楼上的是对的,但是 其中有个字段F12是MEMO类型的,MIN不了,啥办???
 
select top1 distinct * from table

这样就只有一条了啊
 
同意sefeng1982写法
 
select *
from Table A
left outer join (
select distinct F1,F2,F3
from Table
group by F1,F2,F3
) B on A.F1=B.F1 and A.F2=B.F2 and A.F3=B.F3
你的要求:
三个字段的值分别与其它记录相应值相等.
我得到的结果还要包括其它字段值F4,F5....FX等.

得到的記錄還審和原來一樣啊,你這個問題出得就不合理,你又想得到F1,F2,F3的相同的,又想看到其他的記錄,而其他記錄又不一定相等,全部看到後,F1,F2,F3又重複了!
 
select * from 表A t
where checksum(*) = (select top 1 checksum(*) from 表A where F1 = t.F1 and F2=t.F2 and F3=t.F3)
 
to :hongxing_dl,
好人做到底, 那个MEMO字段无法min,怎么办???????????????????
 
表里有唯一字段吗,没有的话加个自增列(id)
select * form
a where id in (select min(id) as id from a group by F1,F2,F3)
 
楼上语法错误,无法执行.
 
后退
顶部