日期:2014-05-17  浏览次数:20541 次

出现诡异了,这样的一句SQL语句竟然不过滤重复的?请教各位朋友
本帖最后由 leisure520 于 2012-07-18 18:40:22 编辑 下面的表格的序号是我自己添加的,不是数据库查询到的数据。



怎么过滤不掉相同编号的数据?

------解决方案--------------------
楼主又来了啊,能让人记得,也不简单。

虽然没分,也回答一下吧。照你这个语句过滤不掉的。
------解决方案--------------------
引用:
楼主又来了啊,能让人记得,也不简单。

虽然没分,也回答一下吧。照你这个语句过滤不掉的。

我是没分了 我的这个sql有问题?
------解决方案--------------------
求解决啊
------解决方案--------------------
请教各位了
------解决方案--------------------
你尝试以编号为过滤条件  
------解决方案--------------------
跪求解决
------解决方案--------------------
引用:
你尝试以编号为过滤条件
 现在是编号为过滤的
------解决方案--------------------
你group的条件这么多。而显示又是其中几个。同样的结果,不稀奇。
------解决方案--------------------
好久的帖子了,算了就当是练习题了。。。。


 
IF OBJECT_ID('T') IS NOT NULL DROP TABLE T
GO

CREATE TABLE T
(
ID INT IDENTITY(1,1) PRIMARY KEY,
NUM NVARCHAR(50),
MName nvarchar(50),
MNum int ,
MScore decimal(18,1)
)

go

INSERT INTO T
SELECT '20120508','煤炭1',8,2   UNION ALL
SELECT '20120508','煤炭1',8,4.5 UNION ALL
SELECT '20120508','煤炭1',8,5.6 UNION ALL
SELECT '20120508','煤炭1',8,6.2 UNION ALL
SELECT '20120508','煤炭1',8,6.3 UNION ALL
SELECT '20120508','煤炭1',8,8.2 UNION ALL
SELECT '20120508','煤炭1',8,9.5 UNION ALL
SELECT '20120508','煤炭1',8,10  UNION ALL
SELECT '20120509','煤炭6',8,9.2 UNION ALL
SELECT '20120509','煤炭6',8,10  UNION ALL
SELECT '20120510','煤炭7',8,9   UNION ALL
SELECT '20120510','煤炭7',8,9.8 UNION ALL
SELECT '20120511','煤炭8',8,9.2 UNION ALL
SELECT '20120511','煤炭8',8,9.9 

GO
--第一种,
SELECT * FROM(
SELECT RIndex=ROW_NUMBER() OVER(PARTITION BY NUM ORDER BY ID desc),* FROM T
) TBL WHERE RIndex=1

GO
--第二种
;WITH CTE AS
(
SELECT MAXID=MAX(ID) FROM T B GROUP BY NUM 
)

SELECT * FROM  T WHERE EXISTS  
(SELECT * FROM CTE B WHERE T.ID=B.MAXID)  

GO
--第三种
SELECT * FROM  T WHERE EXISTS  
(SELECT MAXID FROM (SELECT MAXID=MAX(ID) FROM T  GROUP BY NUM) B WHERE T.ID=B.MAXID)