【发布时间】:2019-10-25 18:09:01
【问题描述】:
我遇到了一个问题,我试图返回一列中只有 1 个值匹配的行。例如:
CREATE TABLE TEST
(
ID INT PRIMARY KEY,
FIRSTNAME VARCHAR(30) NOT NULL,
LASTNAME VARCHAR(30) NOT NULL,
EMAIL VARCHAR(50),
PHONENUMBER VARCHAR(50)
STAMP DATETIME
)
INSERT INTO TEST VALUES (1, 'Tom', 'Lew', 'tom@hotmail.com', '11111111111', '2019-08-23 15:12:06.807')
INSERT INTO TEST VALUES (2, 'Tom', 'Lew', 'tom@hotmail.com', '22222222222', '2019-08-27 15:12:06.807')
INSERT INTO TEST VALUES (3, 'Jack', 'Stan', 'jstan@hotmail.com', '3333333333', '2019-08-03 15:12:06.807')
INSERT INTO TEST VALUES (4, 'John', 'Doe', 'jdoe@hotmail.com', '44444444444', '2019-08-13 15:12:06.807')
INSERT INTO TEST VALUES (5, 'Peter', 'Griffin', 'pgriffin@hotmail.com', '55555555555', '2019-07-23 15:12:06.807')
INSERT INTO TEST VALUES (6, 'Homer', 'Simpson', 'hsimpson@hotmail.com', '66666666666', 2019-08-23 15:12:06.807')
SELECT FirstName, LastName, Email, PhoneNumber
FROM TEST GROUP BY FirstName, LastName, Email, PhoneNumber
HAVING COUNT (FirstName) <= 1
所以结果应该返回除“Tom”之外的所有内容,因为“Tom”在 First Name 列中有多个匹配的值。但是,它会返回所有内容。
如果我执行 SELECT FirstName、LastName、Email 和 GROUP BY FirstName、LastName、Email,它会正确返回。
【问题讨论】:
-
什么是数据库(和版本)?
标签: sql