0

こんにちは、私が達成しようとしているのは、列が null かどうかに応じて where 句に動的な列名を持つクエリです。

例として、行に null ではない予定日がある場合、where 句は次のようになります。

WHERE `Building ID` = '1' and `Appointment Date`='2013-10-10' ;

Appointment Date が null の場合、where 句は次のようになります。

WHERE `Building ID` = '1' and `Backup Date`='2013-10-10' ;  

現在、where 句のサブクエリが返す行が多すぎるため、クエリが失敗します。この問題を回避するにはどうすればよいですか?

私のクエリは以下の通りです:

SELECT `Job ID` 
FROM jobs 
WHERE `Building ID` = '1' 
and (select case when `Appointment Date` IS NOT NULL THEN `Appointment Date` 
else `Backup Date` end FROM jobs WHERE `Building ID` = '1') = '2013-10-10'  
4

3 に答える 3

1
SELECT `Job ID` 
FROM jobs 
WHERE `Building ID` = '1' 
and case when `Appointment Date` IS NOT NULL 
         then `Appointment Date` = '2013-10-10' 
         else `Backup Date` = '2013-10-10'
    end
于 2013-07-20T23:07:17.190 に答える
1

機能を使用してくださいCOALESCE()。null ではない最初のパラメータを返します。

WHERE `Customer ID` = '1' and COALESCE(`Appointment Date`, `Backup Date`) ='2013-10-10' ;
于 2013-07-20T23:07:40.757 に答える
0

これを試して:

SELECT `Job ID` 
FROM jobs 
WHERE `Building ID` = '1' 
AND ((`Appointment Date` IS NOT NULL AND `Appointment Date` = '2013-10-10') 
      OR
     (`Appointment Date` IS NULL AND `Backup Date` = '2013-10-10'))
于 2013-07-20T23:07:46.133 に答える