如何通过COLUMN值进行sqlite3 SELECT

时间:2018-08-10 08:41:42

标签: sqlite

我的SQL数据库有2个表uidmapgidmap,每个表都有2列(UIDSID)和(GID,{{1} })

到目前为止,这两个表都只有一个条目:

SID

GID|SID 30000000|S-1-22-2

此处UID / GID是主键,SID也具有UNIQUE约束

我需要将条目添加到表中,但首先需要检查是否已存在任何此类条目 我遇到的问题是,在UID|SID 30000000|S-1-22-2循环中,我需要从forSELECT

的表中进行UID=<some-value>

一种方法是先匹配我们要查询的表,然后匹配UID或GID

是否可以直接匹配COLUMN值而不是名称?

某种类型的东西: 对于TABLES中的表: GID=<some-value>

还有一个额外的查询,为什么会失败:

SELECT * FROM table WHERE '%ID'=<some-value> and SID=<some-value>

当UID周围出现“”时,不会显示此类错误:

SELECT * from gidmap where UID=<some-value> Error: no such column: UID

2 个答案:

答案 0 :(得分:0)

简化此问题的一种方法是使用upsert。有了它,您不需要检查是否要插入已经存在的东西,因为此功能只会对其进行更新(或执行无害的操作)。尽管这可能不是最有效的方法,但是它消除了在插入数据之前必须检查数据是否已经存在的问题。

答案 1 :(得分:0)

在这种情况下,不提及列名就不可能引用列值。

无论如何,为防止再次尝试插入相同值时出错,并且如果不需要更新任何旧行,则只需使用INSERT OR IGNORE