求一条字段唯一查询 的sql语句

cs_csgyi 2007-08-21 10:25:59
字段唯一查询
mess

id(递增/int) name(姓名/nvarchar) mess(留言内容/nvarchar)

1 AA **
2 BB **
3 AA **
4 AA **
5 BB **
6 EE **
7 FF **


我想查询出的结果是
1 AA **
2 BB **
6 CC **
7 DD **

请高手指教一下应该怎么写这个SQL语句呢(兄弟们希望你的SQL语句测试后在发上来好么 谢谢)

select distinct (name) form mess
select distinct(*) from mess
请不要发以上2条类似的sql语句,我测试过,以上两条语句全部不行,


...全文
2232 39 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiao_yue_er 2011-07-21
  • 打赏
  • 举报
回复
$res=$c->distinct(name)->where('type=1')->select();
不行啊,谁能帮忙解决下
paoluo 2007-08-21
  • 打赏
  • 举报
回复
再說了,那個錯誤那麼明顯,即使不用測試,也可以知道有錯誤的。
paoluo 2007-08-21
  • 打赏
  • 举报
回复
kinglht(爱新觉罗至尊宝) ( ) 信誉:100 2007-08-21 11:42:45 得分: 0


楼上的,有的人回复的用的数据库是不一样的,可能有些地方的语法稍有出入,况且这里回复的基本都是凭记忆写出来的,难免会有落关键字等错误,你用你的数据库测试有什么意义呢!


--------

基本語法錯誤,用什麼數據庫測試都是一樣的。

注意,是基本語法錯誤。

就算是憑記憶寫的,有錯誤很正常,但是還是要盡量寫正確的。

而且,我指出語法錯誤,也沒有問題吧。

再說了,寫個錯誤的在那,沒人會拿去用的。
kinglht 2007-08-21
  • 打赏
  • 举报
回复
楼上的,有的人回复的用的数据库是不一样的,可能有些地方的语法稍有出入,况且这里回复的基本都是凭记忆写出来的,难免会有落关键字等错误,你用你的数据库测试有什么意义呢!
paoluo 2007-08-21
  • 打赏
  • 举报
回复
kinglht(爱新觉罗至尊宝) ( ) 信誉:100 2007-08-21 11:29:28 得分: 0


to paoluo(一天到晚游泳的鱼(學習.NET中)) :
感觉你太热心了,别人的回复都要去测试一下的!

----------

其實你只需要放入查詢分析器中執行下即可。

而那個語句,很明顯的可以看到語法錯誤,即使不執行也會知道是錯誤的。
kinglht 2007-08-21
  • 打赏
  • 举报
回复
to paoluo(一天到晚游泳的鱼(學習.NET中)) :
感觉你太热心了,别人的回复都要去测试一下的!
paoluo 2007-08-21
  • 打赏
  • 举报
回复
jayma555(踩小姑娘的老蘑菇) ( ) 信誉:100 2007-08-21 11:25:29 得分: 0


这条可以
select * from mess inner join (select id,distinct(name) from mess group by name) b
on a.id=b.id and a.name=b.name order by b.name asc


-----------
你測試了沒?

都語法錯誤了,還可以。
jayma555 2007-08-21
  • 打赏
  • 举报
回复
这条可以
select * from mess inner join (select id,distinct(name) from mess group by name) b
on a.id=b.id and a.name=b.name order by b.name asc
paoluo 2007-08-21
  • 打赏
  • 举报
回复
樓主用的是exists的方法?

這個ID是自增列,這個語句應該效率也還可以

--方法二
Select * From mess A Where id In (Select Min(id) From mess Group By name)
kinglht 2007-08-21
  • 打赏
  • 举报
回复
以下以aa为例进行说明:
如果name=aa对应的mess都是相同的,可以
select name,mess from table group by name,mess;
如果想要查询是否有name,mess重复的数据,可以
select name,mess,count(*) from table group by name,mess
having count(*)=1;--等于1不重复,>1说明有重复
如果name=aa对应的mess是不相同的,可以
select name,mess from table where id=(select min(id) from table where name='aa')
and name='aa';
如果想快速删除重复数据,可以
DELETE FROM table E

WHERE E.ROWID > (SELECT MIN(X.ROWID)

FROM table X

WHERE X.name= E.name);
haonanernet 2007-08-21
  • 打赏
  • 举报
回复
恩,其实我最先想到的就是这个方法:

select * from mess t where not exists
(select 1 from mess where name=t.name and id<t.id)

也就是你4种方法中的方法一
paoluo 2007-08-21
  • 打赏
  • 举报
回复
這個ID是特殊的,所以有這四種方法,簡單些。

你貼的那三種是通常是用來取TOP N的。
haonanernet 2007-08-21
  • 打赏
  • 举报
回复
paoluo(一天到晚游泳的鱼(學習.NET中))

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

我正奇怪你怎么还没有贴上呢?哈哈.
paoluo 2007-08-21
  • 打赏
  • 举报
回复
shoushii(守矢) ( ) 信誉:92 2007-08-21 11:02:32 得分: 0


select * from mess inner join (select id,distinct(name) from mess group by name) b
on a.id=b.id and a.name=b.name order by b.name asc


----------

語法錯誤
gliet1981 2007-08-21
  • 打赏
  • 举报
回复
收藏
paoluo 2007-08-21
  • 打赏
  • 举报
回复
haonanernet(与时俱进), 你這個應該是看到我在取某個TOP N的帖子中的回復吧。

這裡是取最小的一個,所以沒必要使用這三種方法。

因為ID是自增列,所以可以使用我上面寫的四種方法,更簡單些。
shoushii 2007-08-21
  • 打赏
  • 举报
回复
select * from mess inner join (select id,distinct(name) from mess group by name) b
on a.id=b.id and a.name=b.name order by b.name asc
shoushii 2007-08-21
  • 打赏
  • 举报
回复
select * from mess inner join (select id,distinct(name) from mess group by name) b
on a.id=b.id and a.name=b.name
Gangzai1983 2007-08-21
  • 打赏
  • 举报
回复
做人要厚道!
haonanernet 2007-08-21
  • 打赏
  • 举报
回复
--方法一:
Select * From mess T
Where (Select Count(name) From mess Where name= T.name And id < T.id) =0
Order By id, name

--方法二:
select * from mess t where not exists
(select 1 from mess where name=t.name and id<t.id)

--方法三:
Select * From mess T
Where id In (Select TOP 1 id From A Where name = T.name Order By id asc)
Order By name, id asc
加载更多回复(19)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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