我的SQL数据库有2个表uidmap
和gidmap
,每个表都有2列(UID
,SID
)和(GID
,{{1} })
到目前为止,这两个表都只有一个条目:
SID
GID|SID
30000000|S-1-22-2
此处UID / GID是主键,SID也具有UNIQUE约束
我需要将条目添加到表中,但首先需要检查是否已存在任何此类条目
我遇到的问题是,在UID|SID
30000000|S-1-22-2
循环中,我需要从for
或SELECT
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
答案 0 :(得分:0)
简化此问题的一种方法是使用upsert。有了它,您不需要检查是否要插入已经存在的东西,因为此功能只会对其进行更新(或执行无害的操作)。尽管这可能不是最有效的方法,但是它消除了在插入数据之前必须检查数据是否已经存在的问题。
答案 1 :(得分:0)
在这种情况下,不提及列名就不可能引用列值。
无论如何,为防止再次尝试插入相同值时出错,并且如果不需要更新任何旧行,则只需使用INSERT OR IGNORE。