我在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`)
如上所述, order 列不应该是唯一的,但是在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
列上的索引。
如果我按照“sql DROP CONSTRAINT UNIQUE not working”详细说明ALTER TABLE menus_types DROP INDEX 'unique'
或ALTER TABLE menus_types DROP INDEX order
,那么我会收到语法警告。
我需要能够添加删除和编辑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
答案 0 :(得分:0)
问题是'order'是SQL中的保留字。如果要删除它,请使用
ALTER TABLE menus_types DROP INDEX `order`
我建议你重命名列的名称,因为它可能会造成很多麻烦,具体取决于你的底层框架。