1

我有一个带有一些值的 SQL 表。

名称元素
122601:1ZIN:AP5|N
122601:1ZIN:AP5|N
122601:1ZIN:AP5|C
122601:1ZIN:AP5|N
122601:1ZIN:AP5|N
122601:1ZIN:AP5|N
123440:1ZPD:CIT|C
123440:1ZPD:CIT|O
123440:1ZPD:CIT|O
123440:1ZPD:CIT|C
123440:1ZPD:CIT|C
123440:1ZPD:CIT|O
123440:1ZPD:CIT|O
123440:1ZPD:CIT|C

例如,如何仅选择 C ​​和 O 的计数大于 2 的名称?哪里除了 C 和 O 什么都没有?

4

3 回答 3

0
SELECT T.NAME
FROM TABLE_NAME T
WHERE T.ELEMENT IN (SELECT TT.ELEMENT
                    FROM TABLE_NAME TT
                    WHERE TT.ELEMENT IN ('C', 'O')
                    GROUP BY TT.ELEMENT
                    HAVING COUNT(TT.ELEMENT) > 2)
于 2012-04-25T13:23:59.680 回答
0

不确定这些是否是最优化的,但......

超过 2 个 C 的地方

SELECT NAME, LENGTH(ELEMENT) - LENGTH(REPLACE(ELEMENT, 'C', '')) as countC FROM table HAVING countC > 2;

元素中只有 C 和 O

SELECT NAME, ELEMENT REGEXP "^[CO]+$" AS hasCO FROM table having hasCO = 1;

没有测试他们,但我认为他们是对的

于 2012-04-25T13:31:18.680 回答
0

这应该为你做:

SELECT NAME FROM TABLE WHERE ELEMENT IN (SELECT ELEMENT                  
FROM TABLE WHERE ELEMENT IN('C', 'O') GROUP BY ELEMENT                  
HAVING COUNT(ELEMENT) > 2) 
于 2012-04-25T13:32:06.980 回答