Fra*_*kMN 1 mysql sql select insert
如果我想在查找外键时插入记录,我可以这样做:
INSERT INTO stores_products (name, product_id)
SELECT 'storeABC',
id
FROM products
WHERE name = 'product123';
Run Code Online (Sandbox Code Playgroud)
(其中product_id是products表的外键)
但是,当我需要从多个表中查找外键时,我无法弄清楚语法.
例如,我想做类似的事情:
INSERT INTO stores_products
(name, product_id, owner_id)
SELECT 'storeABC', products.id, owners.id
FROM products
WHERE name = 'product123'
FROM owners
WHERE name = 'owner456';
Run Code Online (Sandbox Code Playgroud)
(表名和列名只是一个例子,我知道从数据库设计的角度来看它没有多大意义,但我的问题是关于语法...).谢谢.
如果产品和OWNERS记录之间没有关系,请使用:
INSERT INTO STORE_PRODUCTS
(name, product_id, owner_id)
SELECT 'storeABC',
p.id,
(SELECT o.id
FROM OWNERS o
WHERE o.name = 'owner456')
FROM PRODUCTS p
WHERE p.name = 'product123'
Run Code Online (Sandbox Code Playgroud)
否则,如果OWNERS和PRODUCTS表之间存在关系 - 您可以使用JOIN指定它:
INSERT INTO STORE_PRODUCTS
(name, product_id, owner_id)
SELECT 'storeABC',
p.id,
o.id
FROM PRODUCTS p
JOIN OWNERS o ON o.relation_to_product_col = p.relation_to_owner_col
WHERE p.name = 'product123'
AND o.name = 'owner456'
Run Code Online (Sandbox Code Playgroud)
参考:
| 归档时间: |
|
| 查看次数: |
6383 次 |
| 最近记录: |