さて、あなたの現在のテーブルのデザインを保持し、Tags
列に個々のタグを探すために、フルテキスト検索を使用することができるかもしれません。しかし、これは、検索語やタグが複数の単語にまたがる可能性がある場合、問題につながる可能性があります。たとえば、あなたはどれを見つけるしたい場合など今
ID | Tags
-----------------------------------------------
b6e490a44fcd5cc92f3d0f97a23f1c83 | foo
b6e490a44fcd5cc92f3d0f97a23f1c83 | bar
b6e490a44fcd5cc92f3d0f97a23f1c83 | bla
d41d8cd98f00b204e9800998ecf8427e | ble
d41d8cd98f00b204e9800998ecf8427e | blu
d41d8cd98f00b204e9800998ecf8427e | bla
:安全な賭けはにあるかもしれない
は、このような何かをあなたのテーブルを正規化し、各タグにテーブル内の別のレコードを与えますIDは、次の単純なクエリを使用することができfoo
またはbar
タグを持っている:今ID
列はもはやユニークであるため、できません
SELECT DISTINCT ID
FROM yourTable
WHERE Tags IN ('foo', 'bar')
注意主キーとしての役割を果たす。代わりに、主キー列として新しい列を追加してみてください:
CREATE TABLE IF NOT EXISTS mytable (
p_key integer PRIMARY KEY,
id TEXT PRIMARY KEY,
tags TEXT
)
しかし、複数の文字列を検索する際にIDを何度も返すことを避けるにはどうすればよいでしょうか。私が 'foo bar'を検索したとしましょう。私は一度だけ返されるIDが必要です。 – MikeSkril
@MikeSkril私のクエリをもう一度チェックしてください。私は 'SELECT DISTINCT'を使いました。これは、複数回出現したとしても、一度' ID'を返すだけでした。重複を削除する複数の方法でこのクエリを使用することもできますが、これは最も簡単な方法です。 –
エラーが発生しました:「UNIQUE制約に失敗しました」私のIDはプライマリキーであり、ユニークでなければならないのでしょうか? 'mytableが存在しない場合のテーブルの作成(ID TEXT PRIMARY KEY、TEXTタグ) ' – MikeSkril