web-dev-qa-db-ja.com

内部結合を使用したSQL Insert Into

Usersテーブルへの内部結合を持つ挿入クエリを作成します。

テーブルの例は次のとおりです。

ユーザー:

id | fullName | preferredName | email              | mobile   | password
1  | Pan Lim  |  Lim          | [email protected] | 64557812 | passone
2  | Gong My  |  Gong         | [email protected]   | 61345671 | passtwo

注文:

id | userid(Foreign key of "id" from Users | timestamp
1  |               1                       | 2016-06-10 11:45:31

ユーザーテーブルのユーザーIDのみを知っていることに関連する注文に挿入しようとしています。次のように表示されます。

注文:

id | userid(Foreign key of "id" from Users | timestamp
1  |               1                       | 2016-06-10 11:45:31
2  |               2                       | 2016-08-14 12:45:31

しかし、SQLクエリでテストすると、このクエリでエラーが発生します。

INSERT INTO Orders (id, userid, timestamp) 
SELECT Orders.id, Orders.userid, Orders.timestamp FROM Users INNER JOIN Orders ON  Orders.id = Users.id
2
Lue Fang

IDがでない場合、Ordersテーブルの自動インクリメント

INSERT INTO orders ( id,userid, timestamp) 
SELECT o.userid , o.timestamp FROM users u INNER JOIN orders o ON  o.userid = u.id

IDがの場合、注文テーブルの自動インクリメント

INSERT INTO orders ( userid, timestamp) 
SELECT o.userid , o.timestamp FROM users u INNER JOIN orders o ON  o.userid = u.id
9
VNT

Orders.Idが一意の場合、SQLクエリは失敗します。 Idの複製になるように、1つ以上の既存のレコードをOrdersテーブルに挿入しようとしています。達成しようとしていることはわかりませんが、これは機能するはずです。

INSERT INTO Orders ( userid, timestamp) 
SELECT Orders.userid, Orders.timestamp FROM Users INNER JOIN Orders ON  Orders.id = Users.id

編集:Orders.Idは注文のレコードの一意のIDであり、Users.Idはユーザーテーブルのレコードの一意のIDである必要がありますか?この場合、これら2つに参加することはできません。

2
Mr Zach