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 に答える