2

誰かがこのSQLクエリで私を助けてくれますか. クエリに構文エラーがあることを示す 1064 エラーが表示されます。私は今2時間以上エラーを探していて、今イライラしています。

SELECT 
 SUM(IF( (`date` >= DATE_SUB(?, INTERVAL 6 MONTH)) AND (`date` < DATE_SUB(?, INTERVAL 5 MONTH)), earnings, 0)) AS Rev5,
 SUM(IF( (`date` >= DATE_SUB(?, INTERVAL 5 MONTH)) AND (`date` < DATE_SUB(?, INTERVAL 4 MONTH)), earnings, 0)) AS Rev4,
 SUM(IF( (`date` >= DATE_SUB(?, INTERVAL 4 MONTH)) AND (`date` < DATE_SUB(?, INTERVAL 3 MONTH)), earnings, 0)) AS Rev3,
 SUM(IF( (`date` >= DATE_SUB(?, INTERVAL 3 MONTH)) AND (`date` < DATE_SUB(?, INTERVAL 2 MONTH)), earnings, 0)) AS Rev2,
 SUM(IF( (`date` >= DATE_SUB(?, INTERVAL 2 MONTH)) AND (`date` < DATE_SUB(?, INTERVAL 1 MONTH)), earnings, 0)) AS Rev1,
 SUM(IF( (`date` >= DATE_SUB(?, INTERVAL 1 MONTH)) AND (`date` < ?), earnings, 0)) AS Rev0
FROM
 hat_adsense_stats
GROUP BY 
 domain
ORDER BY
 domain

ありがとうここにエラーがあります:

エラー コード: 1064 SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。2 行目付近で '?, INTERVAL 1 MONTH)) AND ( date< ?), Revenue, 0)) as Rev0 FROM hat_adsens' を使用してください。

4

1 に答える 1

3

parameter place holders純粋なSQLでは機能しないクエリがあります。唯一?機能するのは、Dynamic SQL.

ではないクエリを使用している場合はDynamic SQL、その値を指定する必要があります。

ステートメントの構文エラーを削除する例はuser variable、たとえば、を作成することです

SET @date = CURDATE();
SELECT 
 SUM(IF( (`date` >= DATE_SUB(@date, INTERVAL 6 MONTH)) AND (`date` < DATE_SUB(@date, INTERVAL 5 MONTH)), earnings, 0)) AS Rev5,
 SUM(IF( (`date` >= DATE_SUB(@date, INTERVAL 5 MONTH)) ........
于 2013-01-21T14:13:51.457 に答える