sql >> データベース >  >> RDS >> Mysql

節を持つことで2つの条件を作るにはどうすればよいですか?

    SELECTに記載されているとおり 構文:

    つまり、に適用されます。 グループ化操作が実行されました(WHEREとは対照的) 、に実行されます グループ化操作)。 WHERE vsHAVING をご覧ください 。

    したがって、現在のクエリは最初に次の結果セットを形成します。

    SELECT   COUNT(domain) AS `sum domains`, file
    FROM     `table`
    GROUP BY Number
    

    sqlfiddle でご覧ください :

    | SUM DOMAINS |      FILE |
    ---------------------------
    |           2 | aaa.com_1 |
    |           2 | bbb.com_1 |
    |           1 | eee.com_1 |
    

    ご覧のとおり、fileに選択された値 列は、各グループの値の1つにすぎません。これは、MySQLに記載されています。 GROUP BYの拡張機能

    次に、現在のクエリは、HAVINGに従ってこれらの結果をフィルタリングします。 条項:

    HAVING   COUNT(Number) > 1 AND file LIKE '%\_1'
    

    fileの値を使用 上で選択した場合、すべてのグループが2番目の基準に一致します。最初の2つのグループは最初の基準で一致します。したがって、完全なクエリ の結果 は:

    | SUM DOMAINS |      FILE |
    ---------------------------
    |           2 | aaa.com_1 |
    |           2 | bbb.com_1 |
    

    上記のコメントに続いてfileのレコードをフィルタリングします グループ化してから、結果のグループをフィルタリングして、複数の一致を含むグループを探します。したがって、WHEREを使用してください およびHAVING それぞれ(そしてNumberを選択します fileの代わりに 各グループを識別するため):

    SELECT   Number, COUNT(*) AS `sum domains`
    FROM     `table`
    WHERE    file LIKE '%\_1'
    GROUP BY Number
    HAVING   `sum domains` > 1
    

    sqlfiddle でご覧ください :

    | NUMBER | SUM DOMAINS |
    ------------------------
    |    222 |           2 |
    


    1. OracleDatabaseでのPL/SQLサブルーチンの呼び出し表記

    2. リモートサーバーへのmysqli_connect

    3. レイアウトビューのフィルターを使用してMicrosoftAccessレポートを実行する時間を節約する

    4. MySQLCREATEFUNCTION構文