2つの列からクエリ結果を差し引こうとしています。
テーブル:
id | word1 | lang1 | word2 | lang2 |
----+-----------+-------+-----------+-------+
1 | car | 1 | car | 15 |
2 | table | 1 | table | 15 |
3 | Chair | 1 | cahair | 13 |
4 | CDplayer | 15 | CDplayer | 1 |
5 | car | 1 | car | 13 |
言語1のword1で、まだ言語12に翻訳されていないすべての単語を取得したいので、この場合は議長になります。
テーブルには300万行あり、次のクエリの実行には1分かかります。
SELECT DISTINCT word1
FROM `translations`
WHERE lang1 = 1
AND lang2 != 15
AND NOT IN (SELECT word1 FROM `translations` WHERE lang2 == 15)
LIMIT 10
両方の行を別々に選択するのは0.006秒と非常に高速array_diff()
で、PHPでそれらを相互に減算するために使用できますが、MySQLで直接行うより簡単な方法がおそらくあります。