Mysql SQL:当且仅当子项具有特定属性时获取父项
我有一个资产表,其中可以包含资源表中的一个或多个资源 我想返回一个资产,该资产的所有资源状态为'1',或者根本没有 到目前为止,我有:Mysql SQL:当且仅当子项具有特定属性时获取父项,mysql,sql,sql-server,oracle,Mysql,Sql,Sql Server,Oracle,我有一个资产表,其中可以包含资源表中的一个或多个资源 我想返回一个资产,该资产的所有资源状态为'1',或者根本没有 到目前为止,我有: SELECT id FROM asset A JOIN resource R ON A.id = R.asset_id WHERE R.status = '1'. 如果我得到一个记录,我如何知道这是该资产拥有的所有资源,即它不是一个子集 这些数据是捏造的,而我真正的查询有点复杂 我知道这是一个连接查询,但不知道如何进行 谢谢你的帮助 编辑:标题有点误导。我的
SELECT id FROM asset A JOIN resource R ON A.id = R.asset_id WHERE R.status = '1'.
如果我得到一个记录,我如何知道这是该资产拥有的所有资源,即它不是一个子集
这些数据是捏造的,而我真正的查询有点复杂
我知道这是一个连接查询,但不知道如何进行
谢谢你的帮助
编辑:标题有点误导。我的意思是说所有的孩子都有一定的财产 使用NOT EXISTS子句,如下所示:
SELECT id
FROM asset A
INNER JOIN resource R ON A.id = R.asset_id
WHERE NOT EXISTS (
/* Only return results if the asset has resources of all status = '1' */
SELECT 1
FROM Resources R2
WHERE A.asset_id = R2.asset_id
AND R2.status <> '1'
)
使用NOT EXISTS子句,如下所示:
SELECT id
FROM asset A
INNER JOIN resource R ON A.id = R.asset_id
WHERE NOT EXISTS (
/* Only return results if the asset has resources of all status = '1' */
SELECT 1
FROM Resources R2
WHERE A.asset_id = R2.asset_id
AND R2.status <> '1'
)
+1因为“不存在”而不是“不存在”,在这种情况下,它不太可能影响你。现在我看起来很容易。哈哈+1因为“不存在”而不是“不存在”,在这种情况下,它不太可能影响你。现在我看起来很容易。英雄联盟