如何使用返回2列和其中一列的子查询执行In语句是一个Count

时间:2014-08-08 18:44:31

标签: sql db2

我有这个问题:

SELECT *
FROM GUITARS.FENDER
WHERE FENDER.GUITARTYPE IN (
SELECT GUITARTYPE,Count(*)
FROM GUITARS.GUITAR_TYPE
WHERE GuitarColor = 'RED'
Group By GUITARTYPE
Having Count(*) = 1)

基本上我想确保我只检查没有重复计数的Guitartypes。问题是IN只检查1列,但我需要计数(*)来存在多个吉他类型的实例。有没有办法使这个查询工作,或者可能采用另一种方式进行计数。

1 个答案:

答案 0 :(得分:3)

您不需要在select语句中返回计数(),具有group by和count()就足够了。

SELECT *
FROM GUITARS.FENDER
WHERE FENDER.GUITARTYPE IN (
    SELECT GUITARTYPE
    FROM GUITARS.GUITAR_TYPE
    WHERE GuitarColor = 'RED'
    Group By GUITARTYPE
    Having Count(*) = 1)

添加代码使其看起来正确。