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

SQLサーバーでnullまたは値付きの日付範囲の両方を処理できる単一のSQLクエリ

    WITH    limits AS
            (
            SELECT  COALESCE(@startDate, MIN(mydate)) AS startDate, COALESCE(@endDate, MAX(mydate)) AS endDate
            FROM    mytable
            )
    SELECT  m.*
    FROM    limits
    JOIN    mytable m
    ON      mydate BETWEEN startDate AND endDate
    

    mydate にインデックスがある場合、これは最も効率的です。 、この条件は sargable であり、Index Seek を使用するため .

    インデックスがない場合は、IFNULL を使用します 他の人によって提案された構造。



    1. MySQLで文字セットをlatin1からUTF8に変更する方法

    2. すべての雇用者が採用すべき7つの優れた技術習慣

    3. データベースの更新順序

    4. OracleJDBC接続でのMySQLエラースタックトレースの取得