选择在一定范围内的值,但排除在 Sqlite 中确定范围的值

映射过去

在 SQLite 本地数据库中,我有一个 2 列表,一个包含值,一个包含类别。我想根据以下选择更新某些行的类别:

  • 选择属于某个类别的行
  • 确定这些行的值。
  • 选择值在已选择行的特定范围内的行。
  • 更新第二个选择中的行,但排除第一个选择中的行。

我现在的声明(不起作用)如下:

UPDATE table SET category = '3' WHERE 
(
value BETWEEN 
(
((SELECT value FROM table WHERE category = '2') +4) 
AND 
((SELECT value FROM table WHERE category = '2') -4)
EXCEPT SELECT value FROM table WHERE category = '2'
)
... (further constraints)
)

这运行没有错误,但实际上似乎没有选择任何内容,因为没有更新。使此更新正常工作的正确方法是什么?

编辑:根据要求提供表格示例:

行号 价值 类别
1 20 2
2 30 2
3 40 2
4 70 2
5 5 1
6 19 1
7 26 1
8 42 1
9 49 1
10 52 1
11 71 1
12 90 1

我希望当前属于类别 1 的行的值被放置在类别 3 中,基于类别 2 中行值周围的范围 4。所以在这种情况下,任何具有类别 = 1 的行,其值为 16-24、26-34、36-44 或 66-74。

行号 价值 类别
1 20 2
2 30 2
3 40 2
4 70 2
5 5 1
6 19 3
7 26 3
8 42 3
9 49 1
10 52 1
11 71 3
12 90 1
去世

您可以使用EXISTS

UPDATE tablename
SET Category = 3
WHERE Category = 1
  AND EXISTS (
        SELECT 1
        FROM tablename t
        WHERE t.Category = 2
          AND tablename.Value BETWEEN t.Value - 4 AND t.Value + 4
      );

请参阅演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Excel返回值在一定范围内

Pandas:如何选择所有列值都在一定范围内的行?

从二叉树中收集一定范围内的值?

在redux形式中,如何将输入值限制在一定范围内?

在Excel中找出一定范围内的值的索引

Matlab:如何根据其他列中的条目求和一定范围内的值

确定两个值是否在一定范围内的最干净,最易读的方法是什么?

将范围内的值插入sqlite时显示错误

如何在一定范围内找到最大值的x值?

创建一个在一定范围内具有随机值的数组

如何在R的最小值的一定范围内找到向量中的值数?

选择2D NumPy数组中每列一定范围内的元素

在Excel中一定范围内时如何返回值

MySQL查询具有多个随机值,但总和始终在一定范围内

Javascript对象映射计算值在一定范围内的键数

如果条件在一定范围内(边界)具有2个不同的值

如何检查字典列表的值是否在一定范围内?

在数据帧1中找到的数据帧2中找到的值在一定范围内

Java:在一定范围内(包括范围内的最小值和最大值)生成随机双精度数

如何包含或排除范围内的值?

从向量中选择一定范围内的随机数

如何从两个形状相同的Pandas数据框中选择元素位置,并且这些值在一定范围内匹配?

复制一定范围的单元格并仅将相同范围内的值粘贴到另一张工作表中

ggplot散点图,点随着值变小而变大。一定范围内的值均应具有相同的大小

在单元格范围内查找值,并在一定距离外返回值

在一定时间范围内选择最近的位置

如何生成一定范围内的随机数,但排除一些随机数?

如何流在一定范围内BigIntegers的?

将数字停在一定范围内