【问题标题】:SQL Script to Delete Specific Rows删除特定行的 SQL 脚本
【发布时间】:2014-10-13 14:06:35
【问题描述】:

我有一个包含 3 列“纬度”、“经度”、“状态”的 SQL 表。我想创建一个贯穿表中所有行的脚本,从纬度/经度的第一行开始,并删除所有其他小于 0.3 差异的纬度/经度行,然后首先更新“状态”列行为“已完成”。然后它将对第二行纬度/经度执行相同的操作,然后是第三行,依此类推,直到“状态”列中的所有行都“完成”。这是应该用于删除行的查询:

delete from create_concert_xml_job 
where abs({latitude1} - latitude) <= 0.3 AND abs({longitude1} - longitude) <= 0.3;

{latitude1}{longitude}来自与其他行进行比较的行。

谁能帮我解决这个问题?

更新:例如说这些是前 4 行的纬度/经度:

3.5/7.5

4.5/6.5

3.6/7.6

4.6/6.6

因此,当脚本运行第一行时,它应该删除从此查询返回的所有行:

从 create_concert_xml_job 中删除 abs(3.5 - latitude)

这将导致第 3 行被删除。然后它将运行第 2 行并使用查询:

从 create_concert_xml_job 中删除 abs(4.5 - latitude)

这将导致第 4 行被删除。

【问题讨论】:

  • 那是什么latitude1
  • 如果您要为{latitude1} 使用大括号,为什么不为latitude 使用大括号?
  • 为什么要在删除行后设置状态??
  • @HendryTanaka {latitude1} 和 {longitude1} 来自与其他行进行比较的行。它只是我上面查询的占位符。
  • @Fred-ii- {latitude1} 只是用于比较要删除的其他行的纬度的占位符。 'latitude' 将是要删除的纬度。

标签: php mysql sql


【解决方案1】:

好吧,我找到了其他方法。你可以使用

UPDATE create_concert_xml_jobSET latitude= (latitude1-latitude), longitude= (longitude1-longitude) , status='完成';

稍后您将拥有一个包含数据的表,您可以在其中触发查询以删除纬度

create_concert_xml_job 中删除latitudelongitude

【讨论】:

  • 这是您正在寻找的答案吗?
  • @HendryTanaka 不,这不是我要找的。我想先取第一行的纬度/经度,然后删除 0.3 以内的所有其他行。然后我想取第二行的纬度/经度并删除0.3以内的所有其他行。然后是第三行,以此类推,直到处理完所有行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
  • 2022-07-11
  • 1970-01-01
  • 2018-12-22
相关资源
最近更新 更多