使用 DISTINCT 语句的 grp 中的唯一值?
Unique values in a grp using the DISTINCT statement?
我正在使用 SQL PLUS 从三个 table 查询,SNUMBER、ACCOUNTS 和 MYGRPS。
SELECT s.serialnumber,s.type,s.model,a.type,a.class, t.grp
from snumber s, accounts a, mygrps t
where s.snumber=a.snumber
and a.serialnumber=t.serialnumber
and rownum>2
我想在 MYGRPS table 中查找 ACCOUNTS table.
中 class 列具有重复值的组
一个grp中可以有1到多个序列号,我只想找到有多个序列号的grp。
每个序列号都有类型、型号和 class。每组应该有相同的 class.
grp 中的所有序列号都应具有来自帐户 table 的相同 class 值,因此我正在寻找具有多个序列号的 grp,它们在class 列,以修复这些 grps。
我已经想到了上面的说法,但需要一点帮助。我已经阅读了一些关于 DISTINCT select 声明的内容,但我不确定它是否可以应用于此处。
感谢任何帮助!
首先学习使用正确、明确的标准JOIN
语法。 从不 在 FROM
子句中使用逗号。
您需要 GROUP BY
和 HAVING
:
select t.grp, count(distinct a.class) as num_classes
from snumber s join
accounts a
on s.snumber = a.snumber join
mygrps t
on a.serialnumber = t.serialnumber
group by t.grp
having min(a.class) <> max(a.class);
我正在使用 SQL PLUS 从三个 table 查询,SNUMBER、ACCOUNTS 和 MYGRPS。
SELECT s.serialnumber,s.type,s.model,a.type,a.class, t.grp
from snumber s, accounts a, mygrps t
where s.snumber=a.snumber
and a.serialnumber=t.serialnumber
and rownum>2
我想在 MYGRPS table 中查找 ACCOUNTS table.
中 class 列具有重复值的组一个grp中可以有1到多个序列号,我只想找到有多个序列号的grp。
每个序列号都有类型、型号和 class。每组应该有相同的 class.
grp 中的所有序列号都应具有来自帐户 table 的相同 class 值,因此我正在寻找具有多个序列号的 grp,它们在class 列,以修复这些 grps。
我已经想到了上面的说法,但需要一点帮助。我已经阅读了一些关于 DISTINCT select 声明的内容,但我不确定它是否可以应用于此处。
感谢任何帮助!
首先学习使用正确、明确的标准JOIN
语法。 从不 在 FROM
子句中使用逗号。
您需要 GROUP BY
和 HAVING
:
select t.grp, count(distinct a.class) as num_classes
from snumber s join
accounts a
on s.snumber = a.snumber join
mygrps t
on a.serialnumber = t.serialnumber
group by t.grp
having min(a.class) <> max(a.class);