MySQL选择递增值的位置
我有一个DB,它保存带有位置标识符的单词。例如,以下字符串: 敏捷的棕色狐狸跳过了懒狗 位置标识符将是:MySQL选择递增值的位置,mysql,select,where,where-in,Mysql,Select,Where,Where In,我有一个DB,它保存带有位置标识符的单词。例如,以下字符串: 敏捷的棕色狐狸跳过了懒狗 位置标识符将是: 快的 棕色的 狐狸 跳跃 结束 懒惰的 狗 我想完成的是,我选择一个字符串,其中Fox后面紧跟跳跃。我使用以下MySQL语法: SELECT PositionIdentifier FROM TableName WHERE Word='Fox' OR PositionIdentifier + 1 IN (SELECT PositionIdentifier
SELECT PositionIdentifier
FROM TableName
WHERE Word='Fox'
OR PositionIdentifier + 1 IN
(SELECT PositionIdentifier
FORM TableName
WHERE Word='Jumps'
)
然而,plus-one语句并没有像预期的那样工作
我怎样才能做到这一点
更新:
好了,澄清一下。这是我的桌子:
StringID Word Counter Positions
1 Fox 2 6|35
1 Jumps 4 7|12|36|46
1 Over 3 8|37|41
StringID字计数器位置
1福克斯2 6 | 35
1跳4 7 | 12 | 36 | 46
1比3 8 | 37 | 41
所以,从这个表格中,我想找出跟在狐狸后面的跳跃的位置。在这个例子中,我想检索6,7和8作为一对,35,36和37作为一对位置
我希望这更清楚。Thx像这样试一试
SELECT PositionIdentifier
FROM TableName
WHERE Word='Fox'
AND PositionIdentifier IN
(SELECT (PositionIdentifier -1 ) AS PrevPosID
FROM TableName
WHERE Word='Jumps'
)
假设您的PositionIdentifier列是一个INT-other,您可能必须强制转换减法结果使用PositionIdentifier+1作为联接条件在positions表上进行自联接,以获取
跳转
之后的字符串fox
。我假设您的positions
表有以下3个字段:
- string_id:包含单词的字符串的标识符。字符串具有公共标识符的单词。如果您只是在PositionIdentifier字段上联接,那么您的结果可能不正确,因为多个字符串可能包含这两个单词
- PositionIdentifier:标识单词在字符串中的位置
- 单词:实际单词
select p1.string_id, p1.PositionIdentifier
from positions p1
inner join positions p2 on p1.string_id=p2.string_id and p1.PositionIdentifier+1=p2.PositionIdentifier
where p1.Word='Fox' and p2.Word='Jumps'
或者,如果您不需要“跳跃”记录中的任何详细信息,也可以使用
exists()
子查询。我尝试了您的sql,它看起来工作正常吗?
除了“FROM”拼写错误(FORM)和看起来像是“and”而不是“OR”这一事实之外
SELECT PositionIdentifier FROM TableName WHERE Word='Fox' OR PositionIdentifier+1 IN (SELECT PositionIdentifier FROM TableName WHERE Word='Jumps')
你能澄清一下你所说的“加一声明没有如预期那样起作用”是什么意思吗?谢谢你的回答,但是这不是我要找的内容哦,绝对是。绝对不是。然而,在某种程度上这正是我想要的,所以我要感谢您为解决方案做出的贡献。好的,我还想知道第二个单词的位置标识符。如果我不想找狐狸跳,但是狐狸跳到了树上怎么办。查询将快速增长,我需要所有的位置标识符returned@TVAvanHesteren那么你应该在你的问题中描述这些标准,而不是在随后对答案的评论中。顺便说一句,只要把p2.PositionIdentifier添加到选择列表中,你就有你的愿望了。是的,我理解。也可以让SQL从|符号分隔的字符串中选择位置吗?例如:职位是:| 6 | 58 | 74 | 97 |?请在自己的问题中适当地提出你的新问题。使你的数据结构正常化。谢谢你,伙计,我尝试了你的方法,通过一些调整,我能够使它工作,非常感谢。单词和职位存储在不同的表中,请参见上面的更新