0

私は2つのテーブルを持っていauth_userますtemp

これらはそれらのスキーマです:

CREATE TABLE "auth_user" (
    "id" integer NOT NULL PRIMARY KEY,
    "username" varchar(30) NOT NULL UNIQUE,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL,
    "email" varchar(75) NOT NULL,
    "password" varchar(128) NOT NULL,
    "is_staff" bool NOT NULL,
    "is_active" bool NOT NULL,
    "is_superuser" bool NOT NULL,
    "last_login" datetime NOT NULL,
    "date_joined" datetime NOT NULL
);

CREATE TABLE "temp" ( "id" integer, "username" varchar(30));

ユーザー名が同じであれば、テーブルのフィールドをテーブルのフィールドにid更新auth_userしたいと思います。どうすればこれを達成できますか?idtemp

私はこのSQLを試しました:

Update auth_user set id=(select temp.id from temp where temp.username=auth_user.username);

しかし、私はこのエラーを受け取ります:

Error: datatype mismatch
4

1 に答える 1

0

この質問を見つけました同じユーザー名の別のテーブルからテーブル値を更新します

それは私の質問に似ています。そのページの答えを見て、私はこのクエリを試しました

update auth_user set id=(select temp.id from temp where temp.username=auth_user.username) where exists (select * from temp where temp.username=auth_user.username);

そしてそれは素晴らしい働きをします。質問の私のクエリと同じですが、追加のwhere句があります。今Error: datatype mismatchはわかりません(しかし、正確な理由はわかりません)。

于 2012-08-29T06:09:18.173 に答える