更新事物列表而不触及每个条目

2023-12-31

我在数据库中有一个用户应该能够订购的列表。

itemname|  order value (int)
--------+---------------------         
salad   |  1
mango   |  2
orange  |  3
apples  |  4

从数据库加载时,我简单地order by order_value.

通过拖放,他应该能够移动apples以便它出现在列表的顶部..

itemname|  order value (int)
--------+---------------------         
apples  |  4
salad   |  1
mango   |  2
orange  |  3

好的。所以现在我必须在内部更新每个列表项!如果列表有 20 或 100 个项目,那么对于简单的拖动操作来说,这就是大量更新。

itemname|  order value (int)
--------+---------------------         
apples  |  1
salad   |  2
mango   |  3
orange  |  4

我宁愿只用一次更新来做到这一点。我想到的一种方法是,如果“内部订单”是double value.

itemname|  order value (double)
--------+---------------------         
salad   |  1.0
mango   |  2.0
orange  |  3.0
apples  |  4.0

所以在拖放操作之后,我分配apples其值小于其出现在前面的项目:

itemname|  order value (double)
--------+---------------------         
apples  |  0.5
salad   |  1.0
mango   |  2.0
orange  |  3.0

..如果一个项目被拖到中间的某个地方,它的order_value比它之后出现的那个大..我搬到了这里orange介于salad and mango:

itemname|  order value (double)
--------+---------------------         
apples  |  0.5
salad   |  1.0
orange  |  1.5
mango   |  2.0

关于更好的方法来做到这一点有什么想法吗?


Suppose @old是苹果旧位置的值 4,并且@new是新位置 1。

set @old = 4;
set @new = 1;

UPDATE Items
SET `order value` = 
  CASE `order value` WHEN @old THEN @new
  ELSE `order value` + SIGN(@old-@new) END
WHERE `order value` BETWEEN LEAST(@old, @new) AND GREATEST(@old, @new);

我使用 MySQL 5.1.52 在您的示例数据上进行了测试,它有效。如果您需要将较早的条目移至较晚的条目,或将中间的条目移至较晚的条目等,则相同的 SQL 也适用。只需设置以下值:@old and @new.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新事物列表而不触及每个条目 的相关文章

  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • SQL Server 中离线索引重建和在线索引重建有什么区别?

    重建索引时 有一个选项ONLINE OFF and ONLINE ON 我知道当ONLINE模式打开时 它会复制索引 切换新查询以利用它 然后重建原始索引 使用版本控制跟踪两者的更改 如果我错了 请纠正我 但是 SQL 在离线模式下会做什么
  • 具有不同组合的产品和产品包的数据库模型

    您将如何设计数据库来实现此功能 考虑一个场景 我们想要创建一个产品关系 封装 假设我们创建一个产品表 prod id prod name prod fee 1 prepaid A 19 usd 2 prepaid B 29 usd 3 pr
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • 使用用户定义函数 MySql 时出错

    您好 请帮我解决这个问题 提前致谢 我在数据库中定义了这些函数 CREATE FUNCTION levenshtein s1 VARCHAR 255 s2 VARCHAR 255 RETURNS INT DETERMINISTIC BEGI
  • 多边形内的 SQL 地理点在 STIntersect 上不返回 true(但使用 Geometry 返回 true)

    我不想仅仅为了在 STIntersect 中返回 true 而将地理数据转换为几何图形 下面是 SQL 中的代码 DECLARE point GEOGRAPHY GEOGRAPHY Point 1 1 4326 DECLARE polygo
  • 如何为 MySQL 中的字段或列添加别名?

    我正在尝试做这样的事情 但我收到未知的列错误 SELECT SUM field1 field2 AS col1 col1 field3 AS col3 from core 基本上 我只想使用别名 这样我就不需要执行之前执行的操作 这在mys
  • SQL查询json字典数据

    我的表中的 CLOB 字段包含 JSON 如下所示 a value1 b value2 c value3 我正在尝试编写一个 SQL 查询来返回一个包含键和值字段的表 如下所示 key value a value1 b value2 c v
  • 使用什么框架来引导我的第一个生产 scala 项目?

    我正在第一次涉足 scala 的生产应用程序 该应用程序当前打包为 war 文件 我的计划是创建 scala 编译工件的 jar 文件 并将其添加到 war 文件的 lib 文件夹中 我的增强功能是通过 Jersey 公开的 mysql 支
  • 如何使用 SQL Server 2008 执行多个 CASE WHEN 条件?

    我想做的是对同一列使用多个 CASE WHEN 条件 这是我的查询代码 SELECT Url p ArtNo p Description p Specification CASE WHEN 1 1 or 1 1 THEN 1 ELSE 0
  • MySQL NOT IN 来自同一个表中的另一列

    我想运行 mysql 查询来选择表中的所有行films其中的值title该列不存在于另一列的所有值中的任何位置 collection 这是我的表格的简化版本 其中包含内容 mysql gt select from films id titl
  • MySQL InnoDB 约束不起作用

    我偶然发现 innoDB 约束的奇怪行为 但找不到原因 我有包含数据的表格 下面列出了它们的结构 CREATE TABLE contents id int 10 unsigned NOT NULL AUTO INCREMENT title
  • 拥有更多列或更多行会更高效吗?

    我目前正在重新设计一个可能包含大量数据的数据库 我可以选择在数据库中包含许多不同的列或使用大量行 如果我在下面做一些大纲 可能会更容易 item id user id title description content category t
  • MYSQL:如何在同一查询中联接两个表,两次引用同一个表

    我有两张桌子 我正在尝试将下面的示例两个表与表 1 引用表 2 两次结合起来 例如 如果我查看表 1 组 2 和成员 7 它应该查找表 2 中的 ID 并给出输出 Group Members Name Name 2 7 Blue Dog T
  • 如何在 SQL Server 2012 中选择除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以选择所有列 但只选择我不想选择的特定列 我的意思是有时我会遇到这样的问题 表有数百个字段 而我只需要删除一个字段 我需要重写所有列吗 有什么窍门吗 喜欢select
  • MySQL如何获取unix时间戳的时间差

    我有一个保存值1506947452的变量 需要使用公式从该日期提取分钟 started data now date 但started date采用unix时间戳格式10位int数字 我以ajax形式收到并需要放入mysql查询i试试这个 S
  • CONTAINS 不适用于 Oracle Text

    我在执行此查询时遇到问题 SELECT FROM gob attachment WHERE CONTAINS gob a document java gt 0 它给了我 ORA 29902 error in executing ODCIIn
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • 如何使用 SQL 查询创建逗号分隔的列表?

    我有 3 个表 名为 应用程序 ID 名称 资源 id 名称 应用程序资源 id app id resource id 我想在 GUI 上显示所有资源名称的表格 在每一行的一个单元格中 我想列出该资源的所有应用程序 以逗号分隔 所以问题是

随机推荐

  • PHP 在 foreach 中通过引用传递[重复]

    这个问题在这里已经有答案了 我有这个代码 a array zero one two three foreach a as v foreach a as v echo v PHP EOL 有人可以解释一下为什么输出是 零一二二 来自 zend
  • Android WebView 中的自定义视频播放器

    我研究了 Android 中的一些浏览器 当用户单击 Web 视图中的 html5 视频标记项时 他们可以使用自定义播放器播放视频 这个怎么做 更具体地说 当用户单击视频标签时 如何获取视频网址以及如何触发我的自定义播放器而不是 Andro
  • 如何在控制台应用程序中使用 TIdUDPServer?

    Indy UDP 服务器组件似乎依赖于 Windows 消息 因为我看到只有当鼠标光标移到包含服务器组件的表单上时才会出现新消息 我使用以下代码在运行时创建了该组件 private Private declarations Srv TIdU
  • SQL Server Compact Edition 是 SQLite 的明智替代品吗?

    除了 SQL Server Compact 中的文件大小限制和仅限 Windows 的使用之外 还有哪些区别 我找到了一个couple https stackoverflow com questions 2278104 sql ce sql
  • Windows 线程:_beginthread、_beginthreadex 与 CreateThread C++

    有什么更好的方式来启动一个线程 beginthread beginthreadx or CreateThread 我正在尝试确定什么是优点 缺点 beginthread beginthreadex and CreateThread 所有这些
  • 为什么 swagger 会引发不清楚的错误 - Django

    我有一个 django Rest 后端应用程序 我使用 swagger 来查看我的 api 并将其记录到 FE 这工作正常 但我做了一些更改 现在出现此错误 Internal Server Error Traceback most rece
  • 无法在 ubuntu 20.04 中安装 g++ 和 build-essentials

    即使在清洁后apt get clean它说有破损的包裹 sudo dpkg l grep r正如 1 中提到的 什么也不返回 sudo apt get install build essential Reading package list
  • MySQL配置不当原因:相对路径的不安全使用

    我正在使用 Django 当我运行时python manage py runserver我收到以下错误 ImproperlyConfigured Error loading MySQLdb module dlopen Library Pyt
  • 使用 Jasypt 和 PBKDF2WithHmacSHA1 密钥进行基于密码的 AES 加密

    我正在工作中实现加密机制 安全人员的要求如下 使用 PBKDF2WithHmacSHA512 秘密密码 256 位盐和最少 20000 次迭代创建 256 位密钥 盐应该使用 SecureRandom getInstance SHA1PRN
  • Java 接口是否可以定义为只有 Enum 可以扩展它?

    我想这样做并没有什么特别的原因 我只是想知道这是否可能 如果有帮助的话 这是一个可以使用它的虚构情况 想象一下一种类型Enum它用作只读数据源 这样每个值Enum包含不同的内容 这Enum实施Readable 现在 假设我们想要一个读取所有
  • 如何处理持久的 http 请求

    我有一个持久的http请求 后端有大量计算 目前 这一切都是同步的 而服务器计算机 浏览器看不到输出 结果 一段时间后 连接断开 浏览器中显示超时错误 我想立即向浏览器返回一些信息 并让它等待结果 如何实现这一目标 请注意 Java 后端是
  • 多个具有相同名称的单选按钮组

    我已经继承了一个动态创建 HTML 的复杂应用程序 问题是 前面的人不知道单选按钮的 名称 属性实际上是组关联 通过以下标记 有什么方法可以将它们分为两组 div div
  • 列出 .gitignore 不忽略的所有文件

    我想列出 gitignore 未忽略的所有文件 即我的存储库的所有源文件 ag默认情况下效果很好 但我不知道有一种方法可以在不安装其他软件的情况下工作 git ls files没有选项几乎可以很好地工作 但没有考虑已修改 创建的文件 例如
  • 如何安装 NODE_MODULE_VERSION 46

    如何使用 NODE MODULE VERSION 46 安装 Node js 版本 我一直遇到 NODE MODULE VERSION 不匹配的情况 并且重新编译没有帮助 因此切换节点版本可能会更容易 基本上 我一直遇到这样的情况 Warn
  • ini_set('max_execution_time', 0) 是一个坏主意吗?

    有没有充分的理由不设置 PHP 配置变量max execution time http www php net manual en info configuration php ini max execution time to 0 一位同
  • 禁用 Wifi 时未收到 NSD 设备丢失消息

    我已经使用编写了一个示例应用程序NSD正如所解释的here http developer android com training connect devices wirelessly nsd html 该应用程序工作正常 它会发现服务 解
  • 如何创建使用 Gradle 构建的 Kotlin 项目?

    我正在尝试创建一个新的 Kotlin 项目 该项目使用 IntelliJ IDEA Ubuntu 16 04 上的 2016 2 5 通过 Gradle 构建 当我这样做时 我立即收到一条错误消息 这就是我正在尝试的 从欢迎屏幕中选择 创建
  • 在 NET 6.0 中使用 HttpClient 的最佳实践

    我正在为下一个任务寻找最佳实践解决方案 我使用 ASP NET Core 6 0 我创建了一个可与公共 API 配合使用的 SDK SDK通过Http请求与API进行通信 我用HttpClient类来发出http请求 我的目标是构建一个 N
  • 电子邮件 SMTP 验证器

    我需要发送数百封新闻通讯 但想首先检查服务器上是否存在电子邮件 它被称为SMTP http en wikipedia org wiki Simple Mail Transfer Protocol验证 至少我是这样认为的 基于我在互联网上的研
  • 更新事物列表而不触及每个条目

    我在数据库中有一个用户应该能够订购的列表 itemname order value int salad 1 mango 2 orange 3 apples 4 从数据库加载时 我简单地order by order value 通过拖放 他应