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
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
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つに参加することはできません。