我的mysql数据库中有一个名为user
的表。我有一个自动增量id
字段和一个member_id
字段。和另一个选择包的单选按钮。 S for standard and P for premium
。我想根据所选的包将我的会员ID设置为P000001
或S000001
作为第一个ID。
For example if the first member choose P his member_id will be P000001
if the second member choose S his member_id will be S000002
if the third member choose S his member_id will be S000003
...
...
member_id
的长度与P或S完全相同。
答案 0 :(得分:1)
您可以简单地使用此查询
select lpad(member_id,8,'0')
from table
where id = 1
答案 1 :(得分:0)
为什么不简单地有两张桌子?一个用于S成员,一个用于P成员。您可以使用零填充ID。如果数字必须是唯一的,即您不希望存在S000001和P000001,请使用另一个表来存储唯一ID并在S和P表中引用它们。
类似的东西:
-- Table `ids`
CREATE TABLE IF NOT EXISTS `ids` (
`master_id` INT ZEROFILL NOT NULL AUTO_INCREMENT ,
`member_type` ENUM('S','P') NULL ,
PRIMARY KEY (`master_id`) )
ENGINE = InnoDB;
-- Table `s_type`
CREATE TABLE IF NOT EXISTS `s_type` (
`s_type_id` INT NOT NULL ,
`master_id` INT NULL ,
PRIMARY KEY (`s_type_id`) ,
INDEX `fk_s_type_1` (`s_type_id` ASC) ,
CONSTRAINT `fk_s_type_1`
FOREIGN KEY (`s_type_id` )
REFERENCES `ids` (`master_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- Table `s_type_copy1`
CREATE TABLE IF NOT EXISTS `s_type_copy1` (
`p_type_id` INT NOT NULL ,
`master_id` INT NULL ,
PRIMARY KEY (`p_type_id`) ,
INDEX `fk_s_type_copy1_1` (`p_type_id` ASC) ,
CONSTRAINT `fk_s_type_copy1_1`
FOREIGN KEY (`p_type_id` )
REFERENCES `ids` (`master_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
如果你想变得简单,只需使用一个自动递增的id和一个枚举的CHAR(1)来表示'S'或'P'。您只需要在需要显示时将它们放在一起。 CHAR(1)列可用于确定成员资格类型。
如果您不打算添加更多成员资格类型,您甚至可以将TINYINT作为布尔值(0 ='S',1 ='P')。
-- Table `ids`
CREATE TABLE IF NOT EXISTS `ids` (
`member_id` INT ZEROFILL NOT NULL AUTO_INCREMENT ,
`member_type` ENUM('S','P') NULL ,
PRIMARY KEY (`member_id`) )
ENGINE = InnoDB;
...或...
-- Table `ids`
CREATE TABLE IF NOT EXISTS `ids` (
`member_id` INT ZEROFILL NOT NULL AUTO_INCREMENT ,
`member_type` TINYINT ,
PRIMARY KEY (`member_id`) )
ENGINE = InnoDB;
答案 2 :(得分:0)
这个怎么样。
假设您有10人使用Premium,8人使用Standard。
新人加入标准帐户。
function add_user($account_type)
{
$count = query->result(SELECT COUNT(*) WHERE `member_id` LIKE '$account_type_%');
$count = $count+1;
convert count into 7 characters;
$count = $account_type.$count;
insert into database;
}
LIKE是一个匹配部分结果的SQL查询,而%充当外卡。