次のように、SQLiteデータベースに3つのテーブルがあります。
表first_names
id
name
gender
表last_names
id
name
テーブル名
id
first
last
gender
birthday (null)
used (default 0)
最初と最後が一意であり、名前テーブルで両方が一意であるインデックスもあります。
名前テーブルをフィードするために、以下のクエリを使用しました。これは最初に機能しましたが、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])
asの値を使用してみnull AS [birthday], 0 AS [used]
ましたが、テーブルデザインで誕生日がnullに設定され、デフォルトで0に設定されていて、初めて動作したため、必要になるとは思わず、とにかく違いはありませんでした。
一意のフィールドが原因だと思いますが、名前がテーブル名に含まれていないことを確認するためのWHEREがあります。
結果を要求せずに実行されているC#とSQLiteAdminを使用してクエリを試しましたが、そうでない場合は機能しません。
私のクエリの何が問題になっていますか?なぜそれが一度だけ機能するのですか?