我的 SQLite 数据库上有 3 个表,如下所示:
表名
id
name
gender
表姓氏
id
name
表名
id
first
last
gender
birthday (null)
used (default 0)
其中 first 和 last 是唯一的,并且还有一个索引,在 names 表上都是唯一的。
为了提供名称表,我使用了以下查询,该查询第一次有效,但是在我向 last_names 添加了一个新名称并尝试再次使用它之后它失败了。
INSERT INTO names (first, last, gender)
SELECT f.name AS first, l.name AS last, f.gender AS gender
FROM first_names f
LEFT JOIN last_names l
WHERE f.name NOT IN (SELECT first FROM names) AND
l.name NOT IN (SELECT last FROM names)
也尝试过使用(first, last, gender, [birthday], [used])
with values asnull AS [birthday], 0 AS [used]
但由于它的生日在表格设计中设置为 null 并且默认为 0 并且它在第一次工作时认为不需要它也没有任何区别。
我认为这是因为独特的字段,但是我确实有一个 WHERE 来确保名称不在表名中。
我已经尝试使用 C# 和 SQLiteAdmin 执行查询而不请求结果,否则它不起作用。
我的查询有什么问题,为什么它只能工作一次?