我有两张表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
字段更新为id
表的temp
字段。我怎样才能做到这一点?
我试过这个SQL:
Update auth_user set id=(select temp.id from temp where temp.username=auth_user.username);
但是我收到了这个错误:
Error: datatype mismatch
答案 0 :(得分:0)
我发现了这个问题Update table values from another table with the same user name
这与我的问题类似。查看该页面中的answer,我尝试了此查询
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
(但我不知道确切的原因)。