私は、joint-word = 1のエントリがあなたが奇妙なものであると推測しています。
これは、MCVE、ヒントヒント、または少なくともスキーマのヒントヒントがないために再度推測しなければならないことが原因で発生します。
あなたのスキーマにはテキストとして「ジョイントワード」があります。インデックスと思われるものを別のテーブルに格納します(その詳細の設計上の問題はありません)。
したがって、IN
演算子は '10'の中に '1'を見つけるでしょう。
問題の実際の解決策は、ある種の整数(おそらく外部キー)に列を変更することです。
しかし、あなたができない、またはしたくない場合は、
ここにあなたの現在のスキーマを回避するコードがあります。
SELECT *
FROM Ethymologie
WHERE VerbundenesWort =
(select *
from
(SELECT DISTINCT VerbundenesWort
FROM Ethymologie
WHERE VerbundenesWort IS NOT NULL
)
order by random() limit 1
);
あなたはおそらく、あなたの代わりにインデックス/整数の実際の関節の言葉を保存した場合、同じ問題を抱えていることに注意してください。これは、特別な種類のテキストであり、これは結合語で構成されているためです。 「Donaudampfschiffahrtsgesellschaft」の「Donaudampfschiff」を見つけることも問題の原因になります。
いくつかのランダムに選択された単語の1つ(たとえばLIMIT 2
)で行のリストを作成できるようにするには、IN
に固執する必要がありますが、スキーマをint/keyに変更するか、比較のための境界区切り文字はもちろんSQLiteには組み込まれていませんが、ちょっとした魔法でそれを行うことができます。しかし、あなたは、魚のようなスキーマの回避策を作るために使用されるそのような種類の魔法を望んでいませんか? ;-)
'create ...'のいくつかの行と、 'insert ...'のいくつかの行を試して実証するための基礎として提供してください。 https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Yunnosch
結果が奇妙なことを説明してください。 – Yunnosch
あなたのスキーマをMCVEの最小値として表示してください。 – Yunnosch