从表中取记录(100分)

  • 主题发起人 主题发起人 okoy
  • 开始时间 开始时间
O

okoy

Unregistered / Unconfirmed
GUEST, unregistred user!
现有问题如下:
我想利用sql 语句把根据表中某一字段取记录:
要求如下:
若值相同,则取其中一个(最好取最后一个);值不同,则全取。
具体的说:
若表中某字段的值对应如下:
2,2,4,7,3,3,6,2,8
则返回的各记录的该字段的值如下:
4,7,3,6,2,8
 
sql语句中有一个函数,某字段中值有相同的值,则只取一个,具体是哪一个我不记得了,下次再写上来,你也可查一下
 
选择集合只有一列倒是可用DISTINCT
多列的话...
我去试一试,下次再来
 
select * from tablename group by columnname
 
SQL语句中只能取该列的值,不能取出多列的值,
用法如下:
select distinct fielda from table1

select unique fielda from table1
 
hawkview的方法肯定不行,行一列的话效率不如DISTINCT。选多列一样不能解决
问题,所有SELECT的非计算字段都必须在GROUP BY子句中,所有列都在GROUP BY
中,则只要其它列不同,则不管目标列相不相同均会选中。
 
用CURSOR進行表掃描,
或:
select distinct * into #tmp01 from a
update #tmp01
set #tmp01.xx=a.xx
from a,#tmp01
where #tmp01.xx=a.xx
(不知可否?)
 
如果原来的表中有确定顺序字段,例如:
table test
id value
1 2
2 2
3 4
4 7
5 3
6 3
7 6
8 2
9 8
那么,下面的语句满足你的要求
select value from
(select maxid=max(id),value from test
group by value) as temptest
order by temptest.maxid
我想你的表中应该有可以排序的字段吧?否则的话,原来的顺序从是怎么来的呢?
 
select distinct field from table
 
问题的意思应该是希望得到特定顺序的结果,否则岂不是太容易了?直接用
关键字distinct不就行了?还有什么值得讨论的?
 
如果原表中有排序字段(id)试试以下方法:
select * from table a,(select max(id) as id,thiscol table group by
thiscol) b where a.id=b.id and a.thiscol=b.thiscol
 
searching:
你的方法很好,但还有一问题,我想把所有的字段取出来,既把表的其他字段也
返回,当然,这可以实现,但我担心速度问题。
我的sql语句如下:
select Id=max(Id),Name=max(Name),PartsId from SelectLastOne'+
' group by PartsId order by SelectLastOne.Id
其中Id,Name,PartsId为表的三个字段,但我觉得这样速度会很慢,其他方法好象也有此困惑,是否有好的方法,既可返回合乎要求的所有记录(所有字段),
又有一定的速度!
谢谢!!
 
多人接受答案了。
 
okoy,不好意思,放假回来一直没有来看,没有看到你的问题。表之间的连接的确会影响速度。如果改用inner join的用法,速度也许会有一定的提高,因为没有做过试验,不敢确定的讲。但是我想如果id的个数不是很多,记录的条数如果在10000以内,应该不会很慢的。你要是有什么好的办法,我也很想知道。谢谢你的70分
 
后退
顶部