日期:2014-05-18  浏览次数:20714 次

一条关于distinct和text字段的sql语句,向各位求解
表结构  
id     int
name     varchar
actor   varchar
content   text

select   distinct   id,name,actor,content   from   temp
出错,因为distinct不可和text类型一起用;

其实我只需要distinct   name就行了

用select   distinct   (name),id,actor,content   from   temp
仍不行。

各位有什么方法



------解决方案--------------------
---这里的保证id的值是唯一的

select name,id,actor,content
from temp t
where exists(select 1 from temp where t.name=name and t.id> id)

------解决方案--------------------
select name,id,actor,content
from temp a inner join (select min(id),name from temp group by name) b on a.id=b.id

------解决方案--------------------
select name,id,actor,content from table as T
where id =(select min(id) from table where name=T.name)
------解决方案--------------------
shuai45(付出总有回报,要做就做最好.)

--------------------------

你的写法有问题
select name,id,actor,content from table as T
where id in (select min(id) from table where name=T.name) ---这个地方要用in不是等号
------解决方案--------------------
name重复怎么取数,其它内容是按id大的还是小的,看来shuai45(付出总有回报,
的很好,要按大的改成max

------解决方案--------------------
用等号是对的呀
------解决方案--------------------
=号应该没问题 in也可以
------解决方案--------------------
你的sql 写的好乱~看看下面的能否执行

select a.program_id,a.name,a.director,a.playactor,a.content,d.count_total from vod_program a,vod_menu2program b,vod_program_menu c,vod_program_stat d where a.program_id=b.program_id and b.program_menu_id=c.program_menu_id and a.program_id=d.program_id and c.parent_id=239 and a.if_issue=1 and a.if_check=1 and
a.program_id in (select min(a.program_id) from vod_program where name=a.name)



------解决方案--------------------
大哥你提问的时候 能不能将长的sql写的结构化一些,让人有心情看
如:
select .........
from ........
inner join .........
inner join .........
where
...............
group by ...........