1

user我的mysql 数据库中有一个表。我有一个自动增量id字段和一个member_id字段。和另一个用于选择包的单选按钮。S for standard and P for premium. 我想根据选择的包将我的成员 ID 设置为第一个 ID P000001S000001

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。

4

3 回答 3

1

您可以简单地使用此查询

select lpad(member_id,8,'0')
from table
where id = 1
于 2012-05-11T07:05:10.753 回答
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 与 'S' 或 'P' 的枚举 CHAR(1) 结合使用。您只需要在需要显示时将它们放在一起即可。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;
于 2012-05-11T00:59:49.310 回答
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 查询,而 % 充当通配符。

来源 = http://www.techonthenet.com/sql/like.php

于 2012-05-11T03:53:32.633 回答