gpt4 book ai didi

sql - 获取具有相同 "Text"但不同 "Code"的记录

转载 作者:行者123 更新时间:2023-12-02 08:42:58 27 4
gpt4 key购买 nike

我有一个如下表(使用 SQL Server 2008 R2 Enterprise):

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 万条记录的表上运行查询。所以任何优化的查询都会有很大的帮助。

最佳答案

SELECT ID,TEXT,CODE
FROM message
WHERE ID IN
(
SELECT MIN(ID) FROM message
WHERE CODE IS NOT NULL GROUP BY TEXT,CODE
)

SELECT 
MIN(ID)
,TEXT
,CODE
FROM message
WHERE CODE IS NOT NULL GROUP BY TEXT,CODE
ORDER BY MIN(ID)

关于sql - 获取具有相同 "Text"但不同 "Code"的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14954550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com