0

どのユーザーが自分のマシンに UNIQUE OS を持っているかを知りたい

完全にユニークではない人には興味がありません。(ここでは一匹狼を探しています) Distinct 値を探しているわけではありません。完全にユニークなレコードだけです。

これが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ステートメントで私を助けることができますか?

4

4 に答える 4

3

GROUP BY句を使用しHAVING COUNT()ます。

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

このGROUP BY句は、OS ごとに 1 行に絞り込み、この句HAVINGはテーブルに複数の行を持つ OS を除外します。

于 2013-07-01T21:22:22.377 に答える
0

これ?

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

SQL フィドル テスト

于 2013-07-01T21:22:25.257 に答える
0
SELECT *
FROM computers
INNER JOIN
(
SELECT OS, COUNT(*) AS OsCount
FROM computers
GROUP BY OS
HAVING OsCount = 1
) Sub1
ON computers.OS = Sub1.OS
于 2013-07-01T21:22:33.267 に答える