Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

SQL update order in relation ship based on ID

I wonder how to update order in this table for many-to-many relationship using SQL based on PostsId.
So my table now looks like:

I’m using SQL Server

enter image description here

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

BlogsId PostsId Order
1 1 1 0
2 2 1 0
3 3 2 0
3 4 2 0
3 5 3 0
3 6 3 0

but I want to update Order using SQL to this:

BlogsId PostsId Order
1 1 1 1
2 2 1 2
3 3 2 1
3 4 2 2
3 5 3 1
3 6 3 2

So for example: Blog with Id 3 is the first blog in Post with Id 2, Blog with Id 4 is the second Blog in Post with Id 2 and etc…

I’ve tried this:

DECLARE @myVar int
SET @myVar = 0
UPDATE [dbo].[BlogPost]
SET @myVar = [Order] = @myVar + 1

but then I got this:

BlogsId PostsId Order
1 1 1 1
2 2 1 2
3 3 2 3
3 4 2 4
3 5 3 5
3 6 3 6

So, I think I should do something in WHERE part (with Distinct maybe) but I don’t know exactly what. I could write something in C# to do what I want but I don’t know how to write something like this in SQL.

>Solution :

Physically maintaining an order or sequence of rows is rarely a good idea and can lead to data inconsistencies and other unforseen issues.

You would be better off creating a view that provides the additional Order column which you can do using row_number()

Create view BlogPosts as
select *,
    Row_Number() over(partition by PostsId order by BlogsId) as [Order]
from blogpost;

If you really want to update an actual column in the table you could use a CTE

with b as (
    select *,
        Row_Number() over(partition by PostsId order by BlogsId) as seq
    from blogpost
)
update b
set [Order] = seq;
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading