SQLITE:插入或忽略每一列

SQLITE:插入或忽略每一列,sqlite,insert,ignore,Sqlite,Insert,Ignore,我对sqlite命令有问题。 我有一个包含三列的表:Id、user、number。 id正在继续。现在,如果我把一个用户和一个号码放在我的列表中,我的应用程序应该会比较这个号码的用户是否已经存在。问题是,如果我使用标准的insert或ignore命令,Id COLLMN是不固定的,因此每次我都会得到一个新条目。 那么,如果三列中的两列相等,是否有可能只比较其中的两列? 或者我必须使用一个临时列表,其中只有两列 谢谢除非您指定了密钥,否则不应使用insert或ignore,如果您的密钥是身份自动编

我对sqlite命令有问题。 我有一个包含三列的表:Id、user、number。 id正在继续。现在,如果我把一个用户和一个号码放在我的列表中,我的应用程序应该会比较这个号码的用户是否已经存在。问题是,如果我使用标准的insert或ignore命令,Id COLLMN是不固定的,因此每次我都会得到一个新条目。 那么,如果三列中的两列相等,是否有可能只比较其中的两列? 或者我必须使用一个临时列表,其中只有两列


谢谢

除非您指定了密钥,否则不应使用insert或ignore,如果您的密钥是身份自动编号,则您不应该使用insert或ignore

根据User和Number使表中的记录唯一,不需要id列,主键应该是User,Number

如果出于某种原因,您不想这样做,请记住,在这种情况下,您是说用户,数字不是您的唯一性约束,然后类似于

if not exists(Select 1 From MyTable Where user = 10 and Number = 15) 
  Insert MyTable(user,number) Values(10,15) 

我会做的。不是SqlLite男孩,因此您可能必须修改语法并换行您的列名。

如果新记录违反唯一约束,INSERT或IGNORE语句将忽略该记录。 这样的约束是为主键隐式创建的,但您也可以为任何其他列显式创建约束:

CREATE TABLE MyTable (
    ID integer PRIMARY KEY,
    User text,
    Number number,
    UNIQUE (User, Number)
);

SQLite没有流控制语句;将此重写为插入。。。选择…@CL不知道这一点。也许你应该回答这个家伙,如果他改变了表的主键,我想Insert ignore会起作用吗?