このコードを phpMyAdmin で実行しようとしています。しかし、次のエラーが発生します
#1243 - EXECUTE に与えられた不明なプリペアド ステートメント ハンドラ (stmt)
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'count(distinct CASE WHEN topic = ''',
topic,
''' THEN t2.id END) AS `',
topic, '`'
)
) INTO @sql
FROM
(
select count(distinct id) total, topic
from table2
group by topic
order by total desc
limit 2
) d;
SET @sql
= CONCAT('SELECT t1.year, ', @sql, '
from table1 t1
left join table2 t2
on t1.id = t2.id
group by t1.year');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
実装については、フィドルを確認してください。
これを修正する方法は?また、コメンターが言及したように、これはスクリプトを介して送信されたときに機能します。PHPでスクリプトを作成する方法はありますか?