我想 return status 在使用 groupBy 时无法这样做
I want to return status unable to do so when using groupBy
select a.NAME
from tableA a
left outer join tableB b on a.id = b.xxx_id
where a.is_deleted = false
group by a.Name having count(b.id) = 0;
使用上面的代码,returns 名称列表。
结果:
行名称
1 Name1
2. Name2
3. Name3
我正在使用以下代码 return 名称状态。
select a.NAME, a.name_status
from tableA a
left outer join tableB b on a.id = b.xxx_id
where a.is_deleted = false
group by a.Name having count(b.id) = 0;
但是,当我添加 a.name_status 时,它给我一个错误,说 select 子句中的'a.name_status 既不是聚合也不在 group by 子句中。
期望的输出:
行名称。 Name_status
1 Name1 Pending
2. Name2 Expired
3. Name3. Active
鉴于您当前的查询,我猜想您可以使用 不存在 来完成,但要确保实际样本数据有助于澄清。
select a.NAME, a.name_status
from tableA a
where a.is_deleted = false
and not exists (
select * from tableB b
where b.xxx_id = a.id
);
select a.NAME
from tableA a
left outer join tableB b on a.id = b.xxx_id
where a.is_deleted = false
group by a.Name having count(b.id) = 0;
使用上面的代码,returns 名称列表。
结果: 行名称
1 Name1
2. Name2
3. Name3
我正在使用以下代码 return 名称状态。
select a.NAME, a.name_status
from tableA a
left outer join tableB b on a.id = b.xxx_id
where a.is_deleted = false
group by a.Name having count(b.id) = 0;
但是,当我添加 a.name_status 时,它给我一个错误,说 select 子句中的'a.name_status 既不是聚合也不在 group by 子句中。
期望的输出: 行名称。 Name_status
1 Name1 Pending
2. Name2 Expired
3. Name3. Active
鉴于您当前的查询,我猜想您可以使用 不存在 来完成,但要确保实际样本数据有助于澄清。
select a.NAME, a.name_status
from tableA a
where a.is_deleted = false
and not exists (
select * from tableB b
where b.xxx_id = a.id
);