0

Web サイトでナビゲーションを生成するために使用されるリンクを含むデータベース テーブルが必要です。たとえば、'Home' というテキストは ' http://example.com/home ' にリンクし、'Twitter' というテキストは Twitter の URL にリンクします。リンクが表示されるため、order列が表示されます。リンクを編集できるようにしたいので、 auto_incremented を使用していますid

今、私はユニークになりたいorderので、私の計画は最大値を取得してorder1つ追加することでした. これは私が使用しているクエリですが、次のように返されます。Invalid use of group function

INSERT INTO
  `links`
  (`id`, `order`, `text`, `html_text`, `link`, `html_link`)
VALUES
  (NULL, COALESCE((MAX(`order`) + 1), 1), 'text', 'text (html)', 'url', 'url (html)');

私のテーブルは次のようなものです:

CREATE TABLE IF NOT EXISTS `links` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order` int(11) NOT NULL,
  `text` varchar(31) NOT NULL,
  `html_text` varchar(63) NOT NULL,
  `link` varchar(127) NOT NULL,
  `html_link` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `order` (`order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

必要なだけの有効なクエリを取得するにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

2

一度に実行したい場合はINSERT ... SELECT、データベースから値を取得してそれに基づいて挿入するための組み合わせを実行する必要があります。

INSERT INTO
  `links`
  (`id`, `order`, `text`, `html_text`, `link`, `html_link`)
SELECT
  NULL, COALESCE((MAX(`order`) + 1), 1), 'text', 'text (html)', 'url', 'url (html)'
FROM `links`;

でテストする SQLfiddle

于 2013-06-06T17:08:00.663 に答える