我有一個像下面的表(使用SQL Server 2008 R2企業版):獲取具有相同的「文本」和而不同「典」記載
create table Message
(
ID int Not Null Primary Key,
Text nvarchar(100) not null,
Code nvarchar(50) null
)
Insert Into Message Values (1,'Hello Everybody','T6/45')
Insert Into Message Values (2,'Hello Everybody',Null)
Insert Into Message Values (3,'Hello Everybody','T6/45')
Insert Into Message Values (4,'Hello Everybody','T6/45')
Insert Into Message Values (5,'Hello Everybody','T6/70')
Insert Into Message Values (6,'Hello Everybody','T6/70')
Insert Into Message Values (7,'Hello','T6/70')
Insert Into Message Values (8,'Hello','T6/45')
Insert Into Message Values (9,'Hello Everybody',Null)
Insert Into Message Values (10,'Hello Everybody','T6/70')
Insert Into Message Values (11,'Hello',Null)
我需要把所有這些具有記錄相同Text
但不同的Code
。而Code
不會是Null
。
那麼預期輸出將是:
Insert Into Message Values (1,'Hello Everybody','T6/45')
Insert Into Message Values (5,'Hello Everybody','T6/70')
Insert Into Message Values (7,'Hello','T6/70')
Insert Into Message Values (8,'Hello','T6/45')
我想下面的查詢,但它返回幾行:
select m1.*
from Message M1
With (nolock)
JOIN Message M2
With (Nolock)
On m1.Text=m2.Text
where (m1.ID<>m2.ID
and m1.Code<>m2.Code
and m1.Code is not null)
我怎樣才能預期的結果?
另外,這是一個樣本數據庫。我需要在擁有5000萬條記錄的表上運行查詢。所以任何優化的查詢都會有很大的幫助。
「但它返回幾行」 - 你是什麼意思?您的查詢看起來大致正確。什麼是回報,你不期望/想要?它是否返回太多,太少,不同的記錄? – Rup 2013-02-19 09:58:16
它正在返回20行。但預期是4.是的,它返回多個重複行。如..(1 \t您好大家\t T6/45) (1 \t您好大家\t T6/45) (1 \t您好大家\t T6/45) (3 \t您好大家\t T6/45) (3 \t Hello Everybody \t T6/45) (3 \t Hello Everybody \t T6/45) – SKJ 2013-02-19 10:00:33
我喜歡所有的答案。爲大家+1。 :) – SKJ 2013-02-19 10:31:12