gpt4 book ai didi

mysql - 基于一系列值返回结果,即 WHERE ColA = (ColB + n OR ColB - n)

转载 作者:行者123 更新时间:2023-11-29 22:22:46 25 4
gpt4 key购买 nike

我对以下内容有点困惑,请问您可以给我一些指导吗?

我创建了 2 个临时表“compare1”和“compare2”,我想列出表之间常见的单词。

但是,在每个临时表中,我都有一个数字字段“chunkIdx”,它表示单词的位置。我想将列出的结果限制在该位置的特定范围内。

首先让我向您展示我的结果并解释它们的问题所在......

tSpan   wLen    aSize   c1_chunkIdx word    tSpan   wLen    aSize   c2_chunkIdx word
5 7 6 0 daa 5 7 6 43 daa
5 8 7 1 baa 5 8 7 44 baa
5 7 6 1 baa 5 7 6 1 baa

在上面列出的结果中,我只想要第 3 行。由于 c2_chunkIDx 值介于 c1_chunkIDx - 5 和 c1_chunkIDx + 5 之间。显然,第 1 行和第 2 行将无法通过此测试。

我想我可以包含类似......的内容

WHERE (c2.chunkIdx BETWEEN (c1.chunkIdx - 5) AND (c1.chunkIdx + 5))

或者也许...

WHERE (c2.chunkIdx >= (c1.chunkIdx - 5) OR c2.chunkIdx <= (c1.chunkIdx + 5))

在我的 WHERE 子句中,但这样做不会返回任何结果。从字面上看,没有结果选项卡甚至可以查看空数据集(我正在使用 HeidiSQL)。就像查询从未被触发一样,我什至没有收到错误消息。

显然我错过了一些东西(不仅仅是结果)。

我的完整查询如下所示。

SELECT c1.tSpan, c1.wLen, c1.aSize, c1.chunkIdx AS C1_ChunkIdx, c1.word,
c2.tSpan, c2.wLen, c2.aSize, c2.chunkIdx AS C2_ChunkIdx, c2.word
FROM compare1 c1
INNER JOIN compare2 c2 ON c1.word = c2.word
WHERE (c2.chunkIdx BETWEEN (c1.chunkIdx - 5) AND (c1.chunkIdx + 5))
AND c1.tSpan = c2.tSpan
AND c1.wLen = c2.wLen
AND c1.aSize = c2.aSize

请问,如何根据c1.chunkIdx字段的值将结果限制在一个范围内?

感谢您的宝贵时间。

最佳答案

答案似乎是使用变量

SELECT c1.tSpan, c1.wLen, c1.aSize, c1.chunkIdx AS C1_ChunkIdx, c1.word,
c2.tSpan, c2.wLen, c2.aSize, c2.chunkIdx AS C2_ChunkIdx, c2.word
, @lowChunk := (c1.chunkIdx - 5)
, @highChunk := (c1.chunkIdx + 5)
FROM compare1 c1
INNER JOIN compare2 c2 ON c1.word = c2.word
WHERE c2.chunkIdx BETWEEN @lowChunk AND @highChunk
AND c1.tSpan = c2.tSpan
AND c1.wLen = c2.wLen
AND c1.aSize = c2.aSize

这似乎给了我我需要的东西。我不是一个强大的 SQL 专家,所以我无法解释为什么会这样。

关于mysql - 基于一系列值返回结果,即 WHERE ColA = (ColB + n OR ColB - n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30558153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com