Unix Technical Forum

SEO

vBulletin Search Engine Optimization


Go Back   Unix Technical Forum > Database Server Software > MySQL

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-29-2008, 08:28 PM
laredotornado
 
Posts: n/a
Default Statement to set order_id of columns?

Hi,

I'm running MySQL 5.0 on Fedora Core 6 Linux. Currently I have a
table with rows and values like

ID ORDER_ID
-----------------------------
1 1
2 3
3 5
8 5
9 7
11 15
12 15
30 18

I would like to write some UPDATE statement that sets the order IDs in
some consecutive fashion and if there are two order ids with the same
value, the row with the higher key ID would get the higher order id.
So, if I ran the statement against the above data, I would want
results like

ID ORDER_ID
-----------------------------
1 1
2 2
3 3
8 4
9 5
11 6
12 7
30 8

Any ideas how to do this? Thanks, - Dave
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-29-2008, 08:28 PM
strawberry
 
Posts: n/a
Default Re: Statement to set order_id of columns?

On Apr 28, 11:14 pm, laredotornado <laredotorn...@zipmail.com> wrote:
> Hi,
>
> I'm running MySQL 5.0 on Fedora Core 6 Linux. Currently I have a
> table with rows and values like
>
> ID ORDER_ID
> -----------------------------
> 1 1
> 2 3
> 3 5
> 8 5
> 9 7
> 11 15
> 12 15
> 30 18
>
> I would like to write some UPDATE statement that sets the order IDs in
> some consecutive fashion and if there are two order ids with the same
> value, the row with the higher key ID would get the higher order id.
> So, if I ran the statement against the above data, I would want
> results like
>
> ID ORDER_ID
> -----------------------------
> 1 1
> 2 2
> 3 3
> 8 4
> 9 5
> 11 6
> 12 7
> 30 8
>
> Any ideas how to do this? Thanks, - Dave


Depending on exactly what you're after, here's one way. This always
orders by id, ignoring order_id though:

Records: 8 Duplicates: 0 Warnings: 0

SELECT t1.*, COUNT(t1.id) rank
FROM ordering t1
LEFT JOIN ordering t2
ON t1.id >= t2.id
GROUP BY t1.id;
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 04-29-2008, 08:28 PM
Paul Lautman
 
Posts: n/a
Default Re: Statement to set order_id of columns?

laredotornado wrote:
> Hi,
>
> I'm running MySQL 5.0 on Fedora Core 6 Linux. Currently I have a
> table with rows and values like
>
> ID ORDER_ID
> -----------------------------
> 1 1
> 2 3
> 3 5
> 8 5
> 9 7
> 11 15
> 12 15
> 30 18
>
> I would like to write some UPDATE statement that sets the order IDs in
> some consecutive fashion and if there are two order ids with the same
> value, the row with the higher key ID would get the higher order id.
> So, if I ran the statement against the above data, I would want
> results like
>
> ID ORDER_ID
> -----------------------------
> 1 1
> 2 2
> 3 3
> 8 4
> 9 5
> 11 6
> 12 7
> 30 8
>
> Any ideas how to do this? Thanks, - Dave


SET @OI = 0;
UPDATE table
SET order_id = (@OI := @OI + 1)
ORDER BY order_id, id


Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 05:54 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145