English 中文(简体)
B. 作为孤儿的选定结果的最新甄选和储蓄状况
原标题:update select and save position in select results as SortOrder

我有一个更新一些行文的SP,我想更新一下我自己在选择中的立场的SortOrder栏——这里是我的法典的一部分:

UPDATE StagingCategoryItems 
    SET IsDeleted = 0,
    ModifiedOn = GETDATE(),
    ModifiedBy =  DragDropSP  
    WHERE ItemID IN (
    SELECT ItemID
     FROM StagingCategoryItems 
       WHERE ManufacturerID=@ManufacturerID 
       AND CategoryID=@CategoryID
     AND ItemID IN 
     (
    SELECT items
              FROM dbo.Split(@InIds, , )  
        ) 
    AND IsDeleted=1
    )
    AND ManufacturerID=@ManufacturerID AND CategoryID=@CategoryID

因此,我要补充说:

SortOrder = POSITION_IN_SELECT_RESULT

我如何做到这一点?

最佳回答

如果您谈论@InIds中的输入顺序,则可能需要改变这一功能,以便将排名列入产出。 假设数字表:

SET NOCOUNT ON;
DECLARE @UpperLimit INT;
SET @UpperLimit = 200000;

;WITH n AS
(
    SELECT rn = ROW_NUMBER() OVER (ORDER BY s1.[object_id])
    FROM sys.objects AS s1
    CROSS JOIN sys.objects AS s2
    CROSS JOIN sys.objects AS s3
)
SELECT [Number] = rn - 1 INTO dbo.Numbers
FROM n WHERE rn <= @UpperLimit + 1;

CREATE UNIQUE CLUSTERED INDEX n ON dbo.Numbers([Number]);

你们可以发挥这样的作用:

CREATE FUNCTION dbo.Split
(
    @List       VARCHAR(MAX),
    @Delimiter  VARCHAR(10)
)
RETURNS TABLE
AS
    RETURN
    (
        SELECT 
            [Position] = ROW_NUMBER() OVER (ORDER BY [Number]),
            [Value] = CONVERT(INT, 
                SUBSTRING(@List, [Number],
                CHARINDEX
                (
                    @Delimiter, @List + @Delimiter, [Number]
                ) - [Number]))
        FROM dbo.Numbers
        WHERE Number <= LEN(@List)
            AND SUBSTRING
            (
                @Delimiter + @List, [Number], LEN(@Delimiter)
            ) = @Delimiter
    );
GO

页: 1 UPDATE可研究类似情况:

UPDATE i SET 
    [Order]    = f.[Position],
    IsDeleted  = 0,
    ModifiedOn = GETDATE(),
    ModifiedBy =  DragDropSP  
FROM dbo.StagingCategoryItems AS i
INNER JOIN dbo.Split(@InIds,  , ) AS f
ON i.ItemID = f.[Value]
WHERE IsDeleted = 1
AND   ManufacturerID = @ManufacturerID 
AND   CategoryID     = @CategoryID;

(我也删除了你对同一表格的多余检查。)

问题回答

暂无回答




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

难以执行 REGEXP_SUBSTR

I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域

SQL Query Shortcuts

What are some cool SQL shorthands that you know of? For example, something I learned today is you can specify to group by an index: SELECT col1, col2 FROM table GROUP BY 2 This will group by col2

PHP array callback functions for cleaning output

I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

Running numbers in SQL

I have a SQL-statement like this: SELECT name FROM users WHERE deleted = 0; How can i create a result set with a running number in the first row? So the result would look like this: 1 Name_1 2 ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签