1

2つの異なるクエリを発行する必要がないように、ネストされたクエリを使用しようとしています。ネストされたクエリは次のようになります。

INSERT INTO roles (
   _id, 
   user_id,
   user_role)
VALUES (
((SELECT _id FROM roles ORDER BY _id DESC LIMIT 1)+1), '454', 'USER')

しかし、私が実行すると、私は得ます。

ルックアップエラー-MySQLデータベースエラー:FROM句で更新するターゲットテーブルの「ロール」を指定できません

このクエリの回避策はありますか、それとも同じテーブルで挿入と選択を行うことができませんか?

4

2 に答える 2

3

MySQL> = 4.0.14を使用している場合は、次を使用できますINSERT ... SELECT

INSERT INTO roles (
  _id, 
 user_id,
 user_role
)
SELECT _id + 1, '454', 'USER' FROM roles ORDER BY _id DESC LIMIT 1

_idただし、おそらく単に列を作成したいだけでAUTO_INCREMENT、その値を提供しないように見えます。MySQLが残りを行います:

ALTER TABLE roles MODIFY _id INT AUTO_INCREMENT;
INSERT INTO roles (user_id, user_role) VALUES (454, 'USER');
于 2012-05-30T11:52:50.313 に答える
0
INSERT INTO roles 
SELECT _id+1,'454', 'USER' FROM roles ORDER BY _id DESC LIMIT 1
于 2012-05-30T11:54:08.440 に答える