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

SQLクエリ、列がnullでない場合にのみ選択し、それ以外の場合は選択しない

    null以外の列が2つあるときに2つの列を持つ行を取得し、1つしかない場合は1つの行を取得する場合は、クエリを動的に作成する必要があります。

    各行にnull以外の値が含まれる列を常に1つにしたい場合は、ユニオンを使用して行うことができます。

    SELECT a FROM tbl WHERE a IS NOT NULL AND id = ?
    UNION
    SELECT b FROM tbl WHERE b IS NOT NULL AND id = ?
    UNION
    SELECT c FROM tbl WHERE c IS NOT NULL AND id = ?
    

    どの列から値が取得されるかを知りたい場合は、次のようにすることができます。

    SELECT 'col a' AS ColName, a FROM tbl WHERE a IS NOT NULL AND id = ?
    UNION
    SELECT 'col b', b FROM tbl WHERE b IS NOT NULL AND id = ?
    UNION
    SELECT 'col c', c FROM tbl WHERE c IS NOT NULL AND id = ?
    

    注:ユニオンは重複する結果も削除します。重複を保持したい場合は、UNION ALLを使用してください 。




    1. 食料品配達データモデル

    2. InnoDBテーブルとMyISAMテーブルの結合

    3. 複数回挿入する前に値をチェックするためのMySQLトリガー

    4. Wordpressの致命的なエラー:キャッチされないエラー:/wp-includes/wp-db.php:1570の未定義の関数mysql_connect()の呼び出し