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

空でないフィールドをカウントするmysql

    コードは、すべてのフィールドがnullではない行の数をカウントしようとします。 is not nullを使用する必要があります not nullだけではありません 。

    フィールドの数を数えるには、これを使用します:

    SELECT sum((listing_photo_1 IS NOT NULL) +
               (listing_photo_2 IS NOT NULL) +
               (listing_photo_3 IS NOT NULL) +
               (listing_photo_4 IS NOT NULL) +
               (listing_photo_5 IS NOT NULL) +
               (listing_photo_6 IS NOT NULL) +
               (listing_photo_7 IS NOT NULL) +
               (listing_photo_8 IS NOT NULL)
              ) as total
    from listings
    WHERE pmpid = '$pmpid';
    

    行数をカウントするには:

    SELECT count(*) as total
    from listings
    WHERE listing_photo_1 IS NOT NULL AND
          listing_photo_2 IS NOT NULL AND 
          listing_photo_3 IS NOT NULL AND 
          listing_photo_4 IS NOT NULL AND 
          listing_photo_5 IS NOT NULL AND 
          listing_photo_6 IS NOT NULL AND 
          listing_photo_7 IS NOT NULL AND 
          listing_photo_8 IS NOT NULL AND 
          pmpid = '$pmpid'";
    

    編集:

    空白の場合は、次のようなロジックを使用してください:

    SELECT sum((listing_photo_1 IS NOT NULL and listing_photo_1 <> '') +
               (listing_photo_2 IS NOT NULL and listing_photo_2 <> '') +
               (listing_photo_3 IS NOT NULL and listing_photo_3 <> '') +
               (listing_photo_4 IS NOT NULL and listing_photo_4 <> '') +
               (listing_photo_5 IS NOT NULL and listing_photo_5 <> '') +
               (listing_photo_6 IS NOT NULL and listing_photo_6 <> '') +
               (listing_photo_7 IS NOT NULL and listing_photo_7 <> '') +
               (listing_photo_8 IS NOT NULL and listing_photo_8 <> '')
              ) as total
    from listings
    WHERE pmpid = '$pmpid';
    


    1. データベースから範囲値を検索する方法

    2. MS-SQLテーブルデザイナでの角かっこ[]の意味は?

    3. JDBCドライバーはLOADDATAINFILE sqlコマンドをサポートしていますか?

    4. MariaDBで省略記号を使用してテキストを切り捨てる方法