我的mysql数据库中有一个名为user
的表。我有一个自动递增id
字段和一个member_id
字段。以及另一个用于选择包装的单选按钮。 S for standard and P for premium
.我想根据所选包将我的成员 ID 设置为第一个 id 的P000001
或S000001
。
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
的长度为 7,带有 P 或 S。
您可以简单地使用此查询
select lpad(member_id,8,'0')
from table
where id = 1
为什么不干脆有两个表?一个用于 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;
这个怎么样。
假设您有 10 个人使用高级版,8 人使用标准版。
新人加入标准帐户。
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 查询,而 % 充当通配符。
源 = http://www.techonthenet.com/sql/like.php