簡體   English   中英

在MySQL中具有唯一(不不同)值的記錄

[英]Records with Unique (Not Distinct) values in mySQL

我想知道我的哪些用戶的計算機上有UNIQUE OS

我對任何不完全獨特的人都不感興趣。 (我們在這里尋找孤獨的狼)我不是在尋找不同的價值觀。 只是完全唯一的記錄。

這是SQL

CREATE  TABLE `Computers` (
  `ID` INT NOT NULL AUTO_INCREMENT ,
  `CPU` VARCHAR(45) NULL ,
  `OS` VARCHAR(45) NULL ,
  PRIMARY KEY (`ID`) );


INSERT INTO `Computers` (`CPU`, `OS`) VALUES ('386', 'win 3.1');
INSERT INTO `Computers` (`CPU`, `OS`) VALUES ('486', 'Dr Doss');
INSERT INTO `Computers` (`CPU`, `OS`) VALUES ('286', 'win 3.1');
INSERT INTO `Computers` (`CPU`, `OS`) VALUES ('68000', 'Mac OS 7.1');
INSERT INTO `Computers` (`CPU`, `OS`) VALUES ('68030', 'Mac OS 7.1');
INSERT INTO `Computers` (`CPU`, `OS`) VALUES ('Z80', 'CPM');

鑒於此數據,我應該只返回以下行:

ID       OS
2        Dr Doss
6        CPM

有人可以幫助我處理SQL語句嗎?

GROUP BY子句與HAVING COUNT()

SELECT ID, OS
FROM Computers
GROUP BY OS
HAVING COUNT(OS) = 1;

GROUP BY子句將每個操作系統的范圍縮小到一行,而HAVING子句則過濾掉表中具有多行的OS。

http://sqlfiddle.com/#!2/cbfc2/11

使用上面提供的示例

select min(`id`), `os`, count(*) as total
from computers
group by `os`
having `total` = 1

這個?

SELECT * FROM computers
GROUP BY OS
HAVING COUNT(ID) = 1

SQL現場測試

SELECT *
FROM computers
INNER JOIN
(
SELECT OS, COUNT(*) AS OsCount
FROM computers
GROUP BY OS
HAVING OsCount = 1
) Sub1
ON computers.OS = Sub1.OS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM