0

このコードを phpMyAdmin で実行しようとしています。しかし、次のエラーが発生します

#1054 - 「フィールド リスト」の不明な列「年」

SELECT
  CONCAT('SELECT year2,',
  GROUP_CONCAT(sums),
  ' FROM yourtable GROUP BY year2')
FROM (
SELECT CONCAT('SUM(name=\'', name, '\') AS `', name, '`') sums
FROM yourtable
GROUP BY name
ORDER BY COUNT(*) DESC
) s
INTO @sql;

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

実装については、フィドルを確認してください。

これを修正する方法は?そして、PHPでスクリプトを作成する方法はありますか?

4

1 に答える 1

1

Yearは MYSQL で既知のオブジェクトです。「年」という名前の列がある場合は、バックティック「`」を付けて試してください::

SELECT
  CONCAT('SELECT `year`,',
  GROUP_CONCAT(sums),
  ' FROM yourtable GROUP BY `year`')
FROM (
SELECT CONCAT('SUM(name=\'', name, '\') AS `', name, '`') sums
FROM yourtable
GROUP BY name
ORDER BY COUNT(*) DESC
) s
INTO @sql;

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
于 2013-07-02T07:11:39.463 に答える