sqlite3错误:复杂更新操作上的数据类型不匹配

时间:2012-08-28 14:46:03

标签: sqlite sql-update sqldatatypes

我有两张表auth_usertemp

这些是他们的架构:

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

1 个答案:

答案 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(但我不知道确切的原因)。