我有两张表,一张称为许可证,一张称为系统。现在许可证表包含系统 ID 和许可证类型(完整或试用)。系统表保存系统 mac_address。
现在一个系统可能有多个试用许可证和一个完整许可证。现在我想找到尚未生成完整版本的系统,并将它们与它们的 mac_address 一起分组。
请一点建议就足够了。
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')
因此,如果我理解您,您需要找到所有没有列出“完整”许可证的系统。在纯 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
我真的不明白你的问题,但你不能让其中一列独一无二吗?