複数回実行されているクエリがあるため、Prepared ステートメントを使用しようとしました。しかし、同じ値/変数を複数のパラメーターにバインドできる方法があるかどうかを知りたいです。
これが問題のクエリです
PREPARE stmt_pn FROM ' SELECT `date`, `product_id`, `price` FROM `prd`.`pn_ceramic` WHERE `date` IN ( DATE_ADD("2014-08-05", INTERVAL ? DAY) , DATE_ADD("2014-08-16", INTERVAL ? DAY) , DATE_ADD("2014-08-23", INTERVAL ? DAY) ) ';
SET @dn = '1';
EXECUTE stmt_pn USING @dn;
これは私に与えます
ERROR 1210 (HY000): Incorrect arguments to EXECUTE
サンプルデータセットはこちら
+---------------------+------------+-------+
| date | product_id | price |
+---------------------+------------+-------+
| 2014-08-05 00:00:00 | 1.27 | 2.10 |
| 2014-08-06 00:00:00 | 1.47 | 3.00 |
| 2014-08-07 00:00:00 | 1.57 | 2.39 |
| 2014-08-16 00:00:00 | 1.87 | 4.17 |
| 2014-08-17 00:00:00 | 1.37 | 6.06 |
| 2014-08-18 00:00:00 | 1.37 | 2.20 |
| 2014-08-23 00:00:00 | 1.67 | 4.85 |
| 2014-08-24 00:00:00 | 1.47 | 5.34 |
+---------------------+------------+-------+
このデータセットから、クエリは返す必要があります
+---------------------+------------+-------+
| date | product_id | price |
+---------------------+------------+-------+
| 2014-08-06 00:00:00 | 1.47 | 3.00 |
| 2014-08-17 00:00:00 | 1.37 | 6.06 |
| 2014-08-24 00:00:00 | 1.47 | 5.34 |
+---------------------+------------+-------+
同じ値を使用して複数のパラメーターをバインドしようとしていますが、これを達成するための最も速くてクリーンな方法は何だろうか. 私の場合、 Where in 句の日付の数は 100 を超える可能性があり、すべての場合で間隔は同じになるためです。したがって、すべて同じ値を持つ 100 個のパラメーターごとに 100 個の変数を作成したくありません。また、私の場合はパフォーマンスが重要であり、100 個の変数を作成するために別のループを追加することは避けたいものです。