【问题标题】:I want to insert data into table storeuser from table store and table user我想将数据从表存储和表用户插入表存储用户
【发布时间】:2017-05-04 06:42:12
【问题描述】:

我有三个表:storeusersstoreuser

storeuser 具有storeusers 表的外键。

这三个表的 id 列分别为 storeiduseridsuserid,并且这些 id 列都在自动递增。

现在我想将数据从表store和表user插入表storeuser

CREATE TABLE `store2`.`store` (
  `storeid` INT(10) NOT NULL AUTO_INCREMENT,
  `sname` CHAR(45) NOT NULL,
  `stype` CHAR(45) NOT NULL,
  `location` CHAR(45) NULL,
  PRIMARY KEY (`storeid`));

CREATE TABLE `store2`.`users` (
  `userid` INT(10) NOT NULL AUTO_INCREMENT,
  `uname` CHAR(45) NOT NULL,
  `age` SMALLINT(5) NOT NULL,
  PRIMARY KEY (`userid`));

CREATE TABLE `store2`.`storeuser` (
  `suserid` INT(10) NOT NULL,
  `storeid` INT(10) NOT NULL,
  `userid` INT(10) NOT NULL,
  PRIMARY KEY (`suserid`),
  INDEX `storeid_idx` (`storeid` ASC),
  INDEX `userid_idx` (`userid` ASC),
  CONSTRAINT `storeid`
    FOREIGN KEY (`storeid`)
    REFERENCES `store2`.`store` (`storeid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `userid`
    FOREIGN KEY (`userid`)
    REFERENCES `store2`.`users` (`userid`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

【问题讨论】:

  • storeuser表中suserid的值应该是多少?它是主键,而不是自动增量。那么这里应该有什么价值呢?
  • suserud 是自动递增的...它应该从 1 开始
  • suserid 是自动递增的,现在请指导我
  • 我已经为 suserid 添加了自动增量...现在请指导我...提前谢谢..

标签: mysql database create-table


【解决方案1】:

您的要求很奇怪,或者我没有正确理解。

所以基本上,您想为每对彼此无关的 storeid 和 userid(再次自动递增)创建一个名为 suserid(自动递增)的 ID?

我不确定我是否理解你,但根据我的理解,这是一个解决方案:

mysql> select * from store;
+---------+-------+-------+----------+
| storeid | sname | stype | location |
+---------+-------+-------+----------+
|       1 | a     | b     | c        |
|       2 | a1    | b2    | c3       |
+---------+-------+-------+----------+

mysql> select * from users;
+--------+-------+-----+
| userid | uname | age |
+--------+-------+-----+
|      1 | 1     |   2 |
|      2 | 3     |   4 |
+--------+-------+-----+

mysql> desc storeuser;
+---------+---------+------+-----+---------+----------------+
| Field   | Type    | Null | Key | Default | Extra          |
+---------+---------+------+-----+---------+----------------+
| suserid | int(10) | NO   | PRI | NULL    | auto_increment |
| storeid | int(10) | NO   | MUL | NULL    |                |
| userid  | int(10) | NO   | MUL | NULL    |                |
+---------+---------+------+-----+---------+----------------+

现在我将插入到 storeuser:

mysql> insert into storeuser select '',storeid, userid from store join      
users on store.storeid=users.userid;

插入后:

mysql> select * from storeuser;
+---------+---------+--------+
| suserid | storeid | userid |
+---------+---------+--------+
|       1 |       1 |      1 |
|       2 |       2 |      2 |
+---------+---------+--------+

这是你需要的吗?

【讨论】:

  • Mr.Krishnakumar.. 但是存储表和用户表既不相似也不相同...存储和用户表之间没有共同的列..请指导我.....
  • 这就是我所关心的。你在这里真正需要什么?说suserid 1,你需要什么storeid和userid?
  • 请检查这个...krishnakumar..suserid 先生应该填写自动增量,并且来自 store 和 users 的数据(其中 store 有 3 条记录,user 有 4 条记录)必须通过以下方式插入 storeuser使用 WHERE 子句查询....store---># storeid, sname, stype, location '1', 'RF', 'Cp', 'h'-'2', 'JB', 'Rl', ' s'-'3', 'B', 'C', 'g' 用户---> #userid,uname,age '1', 'j', '24'--'2', 's', '37'--'3', 'S', '27'--'4', 'z', '48'
  • @Arunad 您是否可以在问题本身中添加您期望的示例?就像我在回答中给出的那样?你在用户表中有什么。您在 Store 中拥有什么,最后在 storeuser 中需要什么?
  • store---># storeid, sname, stype, location ('1', 'RF', 'Cp', 'h')('2', 'JB', 'Rl' , 's')('3', 'B', 'C', 'g' ) 用户---> #userid,uname,age('1', 'j', '24')('2' , 's', '37')('3', 'S', '27')('4', 'z','48') ......要插入的 2 个表中的数据storeuser 表 ...KRISHNAKUMAR 先生 ....谢谢
猜你喜欢
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
相关资源
最近更新 更多