以下两句话:
hello there
bye!
Run Code Online (Sandbox Code Playgroud)
在表sentence_words中表示:
WORD_ID SENTENCE_ID WORD WORD_NUMBER
10 1 hello 1
11 1 there 2
12 2 bye! 1
Run Code Online (Sandbox Code Playgroud)
我想做一个外连接查询,给我结果:
WORD1 WORD2
hello there
bye! NULL
Run Code Online (Sandbox Code Playgroud)
请注意,我可能想在句子的中间开始,所以我不能假设word2有word_number = 2.如果我选择my_start_number = 2那么查询应该给我:
WORD1 WORD2
there NULL
Run Code Online (Sandbox Code Playgroud)
我试过了:
(my_start_number = 1)
select s1.word word1, s2.word word2
from sentence_words s1
left join sentence_words s2
on s1.sentence_id = s2.sentence_id
where s1.word_number = my_start_number
and (s2.word_number = s1.word_number +1 or s2.word_number is null);
Run Code Online (Sandbox Code Playgroud)
如果句子中有两个单词,那只会给我一个结果.我不知道该怎么做并不复杂.
Mat*_*lie 11
将word_number + 1要求移到LEFT JOIN.
SELECT
s1.word word1, s2.word word2
FROM
sentence_words s1
LEFT JOIN
sentence_words s2
ON s2.sentence_id = s1.sentence_id
AND s2.word_number = s1.word_number + 1
WHERE
s1.word_number = my_start_number
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13590 次 |
| 最近记录: |