如何在Mysql中维护自定义排序顺序?

如何在Mysql中维护自定义排序顺序?,mysql,database-design,database-schema,Mysql,Database Design,Database Schema,假设我有一个信用卡下拉按钮 我点的是: SELECT * from cards; DISCOVER MASTER-CARD VISA 我真的想要 MASTER-CARD VISA DISCOVER 这是由业务决定的自定义订单。 所以我想到了在Mysql中维护一个sequence_id DISCOVER 3 MASTER-CARD 1 VISA 2 所以我可以按顺序得到这些字段 SELECT * from cards order by sequence_id; MASTER-CARD 1

假设我有一个信用卡下拉按钮

我点的是:

SELECT * from cards;

DISCOVER
MASTER-CARD
VISA
我真的想要

MASTER-CARD
VISA
DISCOVER
这是由业务决定的自定义订单。

所以我想到了在Mysql中维护一个sequence_id

DISCOVER 3
MASTER-CARD 1
VISA 2
所以我可以按顺序得到这些字段

SELECT * from cards order by sequence_id;

MASTER-CARD 1
VISA 2
DISCOVER 3
但问题是,当我必须在表中添加另一张卡时,我必须自定义更新所有ID。 有没有更好的方法来保持顺序


无法解决我的问题,因为我无法指定查询中的所有字段,因为表太大且不断变化。

术语
sequence\u id
建议您使用主键来保留订单信息。我认为这种方法没有好处,也会带来很多麻烦。但这也表明你还没有主键,这也不好

只需添加一个专用列:

CREATE TABLE cards (
   id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
   card_name varchar(50) NOT NULL,
   sort_order INT(10) UNSIGNED NOT NULL DEFAULT 9999999,

   PRIMARY KEY (id)
);
。。。并将查询更改为:

SELECT *
FROM cards
ORDER BY sort_order;
9999999默认值只是一个技巧,它可以确保新添加的汽车最后一次出现,直到你在意对它们进行排序为止。这完全是可选的

ORDER BY FIND_IN_SET(card, "MASTER-CARD,VISA,DISCOVER")

将首先使用
card='MASTER-card'
等进行排序。

留下空白使用10、20、30等新的可以挤在中间。这就是为什么旧的行号编程语言总是以这种方式使用行号的原因。谢谢,我认为这解决了我的问题。我可以留下50或100的空白进行大量编辑。