میخای آخرین ترتیب بندی رو یه جایی نگه داری؟ یا اینکه میخای رکورد ها با یه ترکیب بندی خاص قرار بگیره و دفعات بعد نیاز به order by .. نداشته باشی؟![]()
خوب میتونی شماره ی نمایش هر رکورد رو توی یک فیلد دیگه ثبت کنی.آره، میخوام اون ترتیبی که بدست میارم save کنم.
دفعات بعدی نیاز به order by نداشته باشم.
ALTER TABLE `tableName` ORDER BY `fieldName`
id fname age
-- ----- ---
1 fred 26
2 chris 19
3 sara 36
4 john 23
5 billy 31
SELECT * FROM people ORDER BY age
id fname age
-- ----- ---
2 chris 19
4 john 23
1 fred 26
5 billy 31
3 sara 36
id fname age priority
-- ----- --- --------
2 chris 19 1
4 john 23 2
1 fred 26 3
5 billy 31 4
3 sara 36 5
خوب میتونی شماره ی نمایش هر رکورد رو توی یک فیلد دیگه ثبت کنی.
#create a mirror table with Orderr field:
CREATE TABLE `peopleWithOrderr` (
`id` int(10) unsigned NOT NULL,
`fname` varchar(100) NOT NULL default '',
`age` varchar(20) NOT NULL default '0',
`Orderr` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`Orderr`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
#insert to new table(with Orderr):
INSERT INTO `peopleWithOrderr` (`id`, `fname`, `age`)
SELECT `id`, `fname`, `age` from people ORDER BY age;
#change primary
#remove autoincreament
ALTER TABLE `peoplewithOrderr` CHANGE `Orderr` `Orderr` INT( 10 ) UNSIGNED NOT NULL;
#change primary
ALTER TABLE `peoplewithOrderr` DROP PRIMARY KEY ,
ADD PRIMARY KEY ( `id` ) ;
ALTER TABLE `peoplewithOrderr` ADD INDEX ( `Orderr` );