このwhere句を持つ:
1番目と2番目のプレースホルダー?値を持つことができます:1 || NULL
3番目の場所のホルダーが動的に追加されます(配列)
IF(ISNULL(?),1,xy.id) IN
(IF(ISNULL(?),1,(SELECT x.id FROM x WHERE name IN (?))))
送信されるデータがnullの場合、句が常にtrueを返すようにするため、このタイプのisnullチェックが必要です。基本的に、データがnull1 IN 1
の場合、句はnullでない場合、対応するIDを検索しますが、if()
関数は1つの結果(セットではない)のみを返すように制限します。phpでクエリ全体を動的に構築する以外に、ここにはどのようなオプションがありますか?