簡體   English   中英

對數據庫Mysql中的行進行排序

[英]Sort rows in database Mysql

我的數據庫有很多條目,在這里有一些朋友的幫助下,我設法刪除重復行, 刪除行中的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,.....等等。

如何在表格上放置自動增量呢?

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:=@rownum+1 as rank, t.*
from my_table t, (SELECT @rownum:=0) r
order by rank;

我認為,如果您刪除ID字段並重新創建(使用自動遞增),這將解決您的問題。 但是我從來沒有檢查過,因此首先要備份您的數據庫。

如果您確定要執行此操作,則可以確定刪除id字段並再次添加(索引並使用自動增量)將對行進行重新編號。

不過,我不確定,因為這不是我做過的那種事情。 確定要這樣做嗎? 如果編號奇怪,那有什么關系?

另外,不能保證MySQL會按照您想要的方式對行進行重新編號-可能會使它們混亂。

如果要按國家或其他順序對它們進行排序,則必須使用一些PHP並逐行更新行,這並不像聽起來那樣難。

使用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');

這個問題( 使用php通過前端對數據庫記錄行進行重新排序 )確實可以滿足您的要求,盡管它使用php來完成任務。

ts

M.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM