0

我在 MySQL 中有一个小表,用于控制网页上项目的排序顺序。

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `type` text NOT NULL,

  `live` text NOT NULL,

  `order` int(11) NOT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `id` (`id`)

如上所述,订单列不应该是唯一的,但是在 phpMySQLadmin 中它显示为唯一的,当我认为我已经删除了行并且当我使用以下任一搜索时只有 5 个条目时,它会返回一个类似于 '23' 的值似乎是一个自动增量值:

SELECT * FROM menus_types ORDER BY `order` DESC LIMIT 1

或者

SELECT MAX( `order` ) FROM menus_types

我尝试使用 SQL 获取索引名称,SHOW INDEX FROM menus_types但只id返回列上的索引。

如果我尝试ALTER TABLE menus_types DROP INDEX 'unique'ALTER TABLE menus_types DROP INDEX order在这里详细说明“ sql DROP CONSTRAINT UNIQUE not working ”,那么我会收到语法警告。

任何建议,因为我需要能够添加删除和编辑order具有可预测结果的列?

按要求编辑

    CREATE TABLE `menus_types` 

(  `id` int(11) NOT NULL AUTO_INCREMENT,  

`type` text NOT NULL,  

`live` text NOT NULL,  

`order` int(11) NOT NULL,  

PRIMARY KEY (`id`),  

UNIQUE KEY `id` (`id`)) 

ENGINE=MyISAM 

AUTO_INCREMENT=9 

DEFAULT CHARSET=latin1
4

1 回答 1

0

问题是'order' 是SQL 中的保留字。如果要删除它,请使用

ALTER TABLE menus_types DROP INDEX `order`

我建议您重命名列的名称,因为这会带来很多麻烦,具体取决于您的底层框架。

于 2013-08-09T16:08:42.030 回答