2011-12-30 48 views
1

我有很多條目的數據庫,並且在這裏有些朋友的幫助下,我管理如何刪除重複行deleting-duplicate-rows-in-a-mysql-database,但現在我必須面對未排序行的新問題。對數據庫中的行進行排序Mysql

這裏就是比如我的數據庫現在

CREATE TABLE `my_table` (
    `id` int(10) NOT NULL default '0', 
    `name` varchar(255) NOT NULL default '', 
    `address` varchar(255) NOT NULL default '', 
    `phone` varchar(255) NOT NULL default '', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

INSERT INTO `my_table` VALUES (784, 'Albert', 'EGYPT', '202020'); 
INSERT INTO `my_table` VALUES (21, 'John', 'USA', '984731'); 
INSERT INTO `my_table` VALUES (56, 'Albert', 'EGYPT', '343354'); 

,你可以在id [784,21,56]看到這麼有什麼我怎麼可以求助於它是

INSERT INTO `my_table` VALUES (1, 'Albert', 'EGYPT', '202020'); 
INSERT INTO `my_table` VALUES (2, 'John', 'USA', '984731'); 
INSERT INTO `my_table` VALUES (3, 'Albert', 'EGYPT', '343354'); 

id [1,2,3,4,....etc]度假吧,我知道ID中的變化可能會導致腳本本身的問題,因爲它依賴於id來裝飾入口信息,但由於它是新的,所以我需要對它進行排序1,2,3,4,.....等。

回答

1

auto increment放在桌子上怎麼樣?

CREATE TABLE `my_table` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) NOT NULL default '', 
    `address` varchar(255) NOT NULL default '', 
    `phone` varchar(255) NOT NULL default '', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

然後您只需插入值而不指定id。

[編輯]

你也可以命令你行這樣沒有你的表結構進行任何更改

select @rownum:[email protected]+1 as rank, t.* 
from my_table t, (SELECT @rownum:=0) r 
order by rank; 
1

我認爲,如果你刪除ID字段,然後再次創建(與自動增量)這將解決您的問題。 但我從來沒有檢查過,所以首先備份你的數據庫。

1

如果您確定要這樣做,我很確定刪除id字段並再次添加(索引和自動增量)將重新編號行。

雖然我不確定,因爲這不是我做過的那種事情。你是否當然你想這樣做?如果他們奇怪地被編號,它有什麼關係?

另外,不能保證MySQL會按照你想要的方式對行重新編號 - 它可能會混淆起來。

如果你希望他們按國家排序,或者其他的東西,你必須使用一些PHP並逐一更新行,這並不像聽起來那麼難。

1

使用AUTO_INCREMENT柱:

CREATE TABLE `my_table` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) NOT NULL default '', 
    `address` varchar(255) NOT NULL default '', 
    `phone` varchar(255) NOT NULL default '', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

,然後插入:

INSERT INTO `my_table` VALUES ('Albert', 'EGYPT', '202020'); 
INSERT INTO `my_table` VALUES ('John', 'USA', '984731'); 
INSERT INTO `my_table` VALUES ('Albert', 'EGYPT', '343354'); 
+0

不可能!對於150K的條目來做這件事刪除了已經存在的無序ID! – 2011-12-30 14:39:08

相關問題