【发布时间】:2023-02-03 20:05:36
【问题描述】:
您好,我准备了一个演示 SQL 表,如下所示:
CREATE TABLE users
(
Id INT NOT NULL PRIMARY KEY CLUSTERED,
name NVARCHAR(MAX) NOT NULL,
email NVARCHAR(MAX) NOT NULL
);
INSERT INTO users VALUES (1, 'wuzzi', 'security@wunderwuzzi.net');
INSERT INTO users VALUES (2, 'mal2lory', 'mallory@example.org');
INSERT INTO users VALUES (3, 'hac4ker', 'hacker@example.org');
INSERT INTO users VALUES (4, 'wu3zzi', 'security@766.net');
INSERT INTO users VALUES (5, 'mallory', 'mallory@exam765ple.org');
INSERT INTO users VALUES (6, 'hackder', 'security@tre.g');
INSERT INTO users VALUES (7, 'wuzgzi', 'security@tre.g');
INSERT INTO users VALUES (8, 'mallorky', 'security@tre.g');
INSERT INTO users VALUES (9, 'hackmer', 'security@tre.g');
INSERT INTO users VALUES (10, 'bea', 'DIAdig');
我现在需要一个选择查询来检索 6 封个人电子邮件的所有 ID,包括重复邮件。
在此示例中,结果应为: 1,2,3,4,5,6,7,8,9
【问题讨论】:
-
那么你的问题到底是什么?你在实现你所追求的目标时遇到的困难是什么?如果你想要个人电子邮件地址的 ID,你可以不使用
IN吗? (尽管WHERE中针对您定义的可能包含 4,000 个字符或更多字符的列的子句不太可能具有高性能。) -
这只是一个简单的例子。想象一个包含超过 100000 个条目的表。考虑到 ID 6-9 之间的重复项,需要检索列表的特定数量(本例中为 6)。
-
所以你的意思是如果有有效的电子邮件地址?那么 10 是因为没有有效的吗?
标签: sql sql-server tsql