【发布时间】:2016-01-25 16:42:43
【问题描述】:
我正在为 Mac OSX 客户端使用名为 MunkiReport 的报告工具。这个工具使用一个 MySQL 数据库,其中有一个名为 inventoryitem 的表,看起来像这样(我省略了一些列):
| id | serial_number | path
| 1 | C01 | Applications/Application01.app
| 2 | C01 | Applications/Application02.app
| 3 | C01 | Applications/Application03.app
| 4 | C02 | Applications/Application01.app
| 5 | C02 | Applications/Application03.app
| 6 | C02 | Applications/Application04.app
现在假设我想列出同时安装了 Application01 和 Application03 的所有序列号,我这样做:
SELECT `serial_number`
FROM `inventoryitem`
WHERE `path` IN ('Applications/Application01.app','Applications/Application03.app')
GROUP BY `serial_number`
HAVING COUNT(`path`)=2
输出将是:
| serial_number |
| C01 |
| C02 |
但是,我真正想要的是列出所有已安装 Application03 但未安装 Application02 的序列号...
我已经尝试了几件事,但我无法做到正确。我想也许是一个子查询?首先列出 Application03,然后从该数据中列出所有没有 Application02 的序列号。
我是一个 MySQL 新手,所以我有点困惑。
【问题讨论】: