2017-06-24 73 views
6

W moim projekcie wprowadziłem wiele zmian w bazie danych iw pewnym momencie muszę ponownie przypisać kolejność do jakiejś tabeli w mojej bazie danych. więc chcę. Mam następującą tabelę.Dynamiczne zmienianie kolejności w mysql

id  name  address  order 
1  vijay mumbai  2 
3  ram  delhi  4 
4  ravi  pune  5 
5  rutul surat  8 
9  vipul agra  11 

I chcę zaktualizować go z kwerendy mysql ... jak

id  name  address  order 
1  vijay mumbai  0 
3  ram  delhi  1 
4  ravi  pune  2 
5  rutul surat  3 
9  vipul agra  4 

Więc chcę to moje pole, aby aktualizować od 0 do plus jeden i tak dalej ... Jak aby to zrobić, nie mam pojęcia ... Próbuję, ale nie jestem też bliski rozwiązania. Jak to zrobić? Proszę pomóż mi.

+0

można spróbować użyć numeru wiersza –

Odpowiedz

4

można użyć następującego zapytania:

SET @orderid = -1;  
update yourTableName set `order` = (@orderid:[email protected]+1) 
order by id asc 

EDIT:

W CodeIgniter można zrobić, jak następuje:

$this->db->query("SET @orderid = -1"); 
$this->db->query("update table_name set `order` = (@orderid:[email protected]+1) order by id asc"); 
+0

Oczywiście używając ' order' w zapytaniu spowoduje mysql kaszel :-) Użycie '\ 'order \' 'byłoby lepsze .... –

+0

Tak, zaleca się unikać c nazwa kolumny ** mysql ** domyślne słowa kluczowe –

+0

Tak, działa ... czy masz jakiś pomysł, jak zaimplementować go na funkcji codeigniter? –