gpt4 book ai didi

mysql - 如何在 HQL 查询中检查 NULL 或无效

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:16 25 4
gpt4 key购买 nike

我有两个不同的表神器和分类。我想检索没有分类的工件列表。分类表包含ID(PK)、Artifact_Id(外键)、Active(0/1),而工件表包含ID(PK)、Name。每个神器可以有很多分类。我想在没有分类时返回一个工件列表(即分类不包含该工件,或者当工件有分类但所有实例都不活动时(0))

例如

Artifact
Id Name
1 xyz
2 pqr
3 abc

Classification
Id Artifact_id active
a1 1 0
a2 1 0
a3 1 0
a4 3 0
a5 3 1

在上述情况下,工件 1 和 2 没有分类,但工件 3 有分类,因为一个实例处于事件状态 (1)。所以我想返回 1 和 2。我不确定如何查询。这是我尝试过的(虽然不是太多而且是错误的)

def list = findAll("from artifact as a full outer join classification as c on a.id=c.artifact_id where active == 0 OR c.aritfact_id is NULL,[max:limit, offset:startPos])

我也试过sql

select *  from ARTIFACT full outer join classification  on artifact.id = classification.ARTIFACT_ID where sum(classification.active) == 0 OR classification.aritfact_id is NULL

最佳答案

在 SQL 中你可以这样做

SELECT * FROM Artifact WHERE Id NOT IN ( 从分类中选择 Artifact_id WHERE active = 1);

基本上,您会得到一个包含所有具有事件分类的工件 ID 的列表,然后只得到在该列表中的工件,即非事件分类或根本没有分类。

关于mysql - 如何在 HQL 查询中检查 NULL 或无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com