首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中更新Order字段

在SQL中更新Order字段
EN

Stack Overflow用户
提问于 2009-11-10 16:24:01
回答 1查看 993关注 0票数 1

我们需要向我们的EventVenue表中添加顺序,这是通过添加一个int字段来存储EventVenue的顺序来完成的。排序基于父事件的ID和事件的VenueGrouping。

如果VenueGrouping为false,则EventVenues将按顺序排序。但是,如果为真,则来自同一个父事件的同一事件的EventVenues将具有相同的排序。例如,假设我们已经按事件过滤了

代码语言:javascript
复制
EVID | VenueID | Not Grouped | Grouped
  1  |    1    |      1      |   1
  2  |    2    |      2      |   2
  3  |    2    |      3      |   2
  4  |    3    |      4      |   3

问题是分组何时更改。我需要一些SQL来适当地更新活动的地点顺序,但是我发现我的头脑很难理解它,特别是当我从未分组到分组而不留下空白的时候。

我认为它需要像下面这样的if语句,但是如果一个更有效/更干燥的解决方案是合适的,那么更好:

代码语言:javascript
复制
-- Changing from Ungrouped to Grouped
IF @OldGrouping=0 AND @NewGrouping=1
   BEGIN
      UPDATE EventVenues SET Ordering=...
   END
-- Changing from Grouped to Ungrouped
ELSE IF @OldGrouping=1 AND @NewGrouping=0
   BEGIN
      UPDATE EventVenues SET Ordering=...
   END

任何帮助都很感激。

根据请求,更多的示例数据:对格式化感到恼火,因此对标题使用了一个键:a= EventVenueID,B= VenueID,C=原始排序,D=更新排序

从未分组更新到分组

A-B

从分组更新到未分组

A-B

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-10 16:29:10

代码语言:javascript
复制
WITH    rows AS
        (
        SELECT  e.*,
                ROW_NUMBER() OVER (ORDER BY evid) AS rn,
                DENSE_RANK() OVER (ORDER BY venueid) AS dr
        FROM    EventVenues e
        )
UPDATE  rows
SET     Ungrouped = rn,
        Grouped = dr

更新:

如果我正确理解,Ordering是一个列,您可以根据某些外部参数(而不是存储在DB中)来更新它。

从未分组更新到分组更新:

代码语言:javascript
复制
WITH    rows AS
        (
        SELECT  e.*,
                DENSE_RANK() OVER (ORDER BY VenueID DESC) AS dr
        FROM    EventVenues e
        )
UPDATE  rows
SET     Ordering = dr

这将以降序的方式更新Ordering,将相同的命令分配给相同的VenueID

从分组更新到未分组更新:

代码语言:javascript
复制
WITH    rows AS
        (
        SELECT  e.*,
                ROW_NUMBER() OVER (ORDER BY evid DESC) AS rn
        FROM    EventVenues e
        )
UPDATE  rows
SET     Ordering = rn

这将按降序更新Ordering

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1709206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档