Mysql的。查询将数据插入与另一个相关的表中

时间:2012-01-20 14:46:46

标签: java mysql sql insert

我是sql的新手。我怀疑假设我有两张桌子。一个称为用户,另一个称为用户。

User
User_Id - name - email

Order
Order_id - product - User_id

我应该使用什么查询在订单表中插入新订单,其中User_id字段与用户表(现有用户)中的User_id相关

例如:

Order_id - product - User_id
1a - plate - 1
2a - car - 3
3a - bike - 1

4 个答案:

答案 0 :(得分:1)

如果您拥有该用户的nameemail,则可以尝试此操作。如果USER在user_idname列上有复合主键,则它可以正常运行。最好将外键关系保留在ORDER的user_id列上。

示例有NAME列,您也可以尝试使用电子邮件列。

INSERT INTO ORDER (ORDER_ID, PRODUCT, USER_ID)
VALUES (1a, 'plate', (SELECT USER_ID FROM USER WHERE NAME = 'Existing user'));

编辑:

我只参与过Oracle sql。发表评论后,找到了这个链接。

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

如果您在order_id列上定义了AUTO_INCREMENT,则无需传递值。

INSERT INTO ORDER (PRODUCT, USER_ID)
VALUES ('plate', (SELECT USER_ID FROM USER WHERE NAME = 'Existing user'));

答案 1 :(得分:0)

您使用标准的sql插入。

insert into Order (Order_id, product, User_id) values ("3a", "bike", 1)

如果您的表已设置属性,则User_id字段将存在外键限制,因此如果您尝试插入订单但未引用有效人员,则mysql将引发错误。

答案 2 :(得分:0)

INSERT order (Order_id, product, User_id) VALUES (1a,plate,1) 

外键与插件中使用的sql无关,它应该在创建表时设置,或者在创建表后通过ALTER TABLE查询设置。

答案 3 :(得分:0)

使用FOREIGN KEY创建表时,将定义表之间的关系。

CREATE TABLE Users(
    UserId int primary key
);

CREATE TABLE Orders(
    OrderId int primary key,
    UserId int FOREIGN KEY REFERENCES Users(UserId)
);

然后你做一个简单的插入,如:

INSERT INTO ORDER(OrderId, UserId) VALUES(1, 5);

在这里查看外键约束的文档:http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html