两个表P,W通过组外键连接。下面的内部SQL只返回表P'name',它在W表中只有一个匹配的'type'。外部SQL显示名称和类型列值。
基本上我只需要检索只有一种类型(W)的名字(p)。
下面的声明是正确的,但是,我想知道如果没有内部SQL或任何其他更好的解决方案我能做到。
select p.name, w.type
from p, w
where p.name in
(
select p.name
from P , w
where p.group = w.group
group by p.name
having count(w.type) = 1
)
AND
p.group= w.group
答案 0 :(得分:1)
如果您只有一种类型,它也始终是最大(和最小)值。因此,您可以在没有外部查询的情况下简化对此值的检索:
select p.name, max(w.type) as type
from p
join w on p.group = w.group
group by p.name
having count(w.type) = 1
在1:n
- 关系中(例如,一个名称只属于一个组,因为name
是主键,所以你在这里),你通常只需group by
w
select p.name, w.type
from p, w
where p.group in
(
select w.group
from w
group by w.group
having count(w.type) = 1
)
AND
p.group= w.group
1}};这将简化您的内部查询(与原始查询相比,它可以节省一个连接),但更通用(例如,对于不同的计数):
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
Messaging.messaging().subscribe(toTopic: "/topics/testTopic")
}