我想获得这种方法的更复杂的版本。我的目标只是从表中获取 1-n 个单词组合,我在其中逐行存储单个单词。词组应该按照 id 顺序来构建,而不是随机顺序。
目前我使用 mysql 变量但问题来了,当我尝试获得大于 12 个单词的组合时,因为 mysql 在内部使用的 JOIN 表存在限制。此外,我还没有想出如何一次获得所有组合。结果我只得到“word1 word2”、“word3 word4”或“word1 word2 word3”、“word4 word5 word6”,而不是“word1 word2”、“word1 word2 word3”、“word1 word2 word3 word4”等。
SELECT (@word3 := CONCAT(@word3, ' ', w.word)) AS word3,
(@word2 := CONCAT(@word2, ' ', w.word)) AS word2,
(@word3 := @word2) _word3,
(@word2 := w.word) _word2,
w.book_id
FROM (SELECT @word3:='') _word3,
(SELECT @word2:='') _word2,
word w, text t, chapter c, verse v
WHERE v.number IN (14) AND c.number IN (21) AND c.book_id IN (1) AND t.verse_id = v.id AND w.id = t.word_id AND v.chapter_id = c.id
章节,诗句和文本用于显示更大的上下文,但基本上单词表是:
字
id,
word,
numeric_value,
transliteration,
translation,
words_count,
book_id
我认为加入表限制是因为我还想连接音译,字数和其他字段。
我也在选择上试过这个:
if(@word3, @word3 := CONCAT(@word3, ' ', w.word), @word3 := '') AS word3,
if(@word2, @word2 := CONCAT(@word2, ' ', w.word), @word2 := '') AS word2,
但由于某种原因它没有工作。
那么从表中获取相关单词组合的最佳方法是什么,其中单词位于不同的行上?
示例字表数据:
this
is
a
phrase
containing
words
on
separate
rows
示例输出:
this is, is a, a phrase, phrase containing, containing words, words on,
on separate, separate rows, this is a, is a phrase, a phrase containing,
phrase containing words, containing words on, words on separate,
on separate rows, ...
依此类推,有 4 到 n 个单词组合。