1

我有两张表,一张称为许可证,一张称为系统。现在许可证表包含系统 ID 和许可证类型(完整或试用)。系统表保存系统 mac_address。

现在一个系统可能有多个试用许可证和一个完整许可证。现在我想找到尚未生成完整版本的系统,并将它们与它们的 mac_address 一起分组。

请一点建议就足够了。

4

3 回答 3

1
 select 
    s.*
from
    systems as s 
where
    s.system_id not in 
    (select l.system_id from licenses as l where l.licence_type='full')
于 2012-07-20T09:44:50.917 回答
0

因此,如果我理解您,您需要找到所有没有列出“完整”许可证的系统。在纯 SQL 中,您可以使用 LEFT JOIN 来实现这一点。就像是

SELECT DISTINCT s.system_id,s.mac_address
FROM systems s
LEFT JOIN licences l ON s.system_id=l.system_id AND l.licence_type = 'full'
WHERE l.licence_id IS NULL
于 2012-07-20T09:40:46.003 回答
0

我真的不明白你的问题,但你不能让其中一列独一无二吗?

于 2012-07-20T09:52:52.553 回答