我从未尝试过,我不知道这是不是错了。
INSERT INTO produits(produit_id, fournisseur_id, marque_id, categorie_id,produit_nom,
produit_prix, produit_description, quantite_stock,
date_production, date_expiration)
VALUES (seq_produits.nextval,
SELECT fournisseur_id FROM fournisseurs WHERE fournisseur_nom='LebanoCop',
SELECT marque_id FROM marques WHERE marque_nom='Hyper-Products',
SELECT categorie_id FROM categories WHERE categorie_nom='viandes',
'Mortadella', 2000, 'tres delicieuse', 100, '25-MAY-2012', '25-MAY-2013')
这可以吗?我得到的错误是表达式缺失。我正在使用Oracle。
答案 0 :(得分:0)
您似乎想要三个选定的值,这些值将来自三个子查询中的每一个的单例结果。我认为应该有效的符号是:
INSERT INTO produits(produit_id, fournisseur_id, marque_id, categorie_id,produit_nom,
produit_prix, produit_description, quantite_stock,
date_production, date_expiration)
VALUES (seq_produits.nextval,
(SELECT fournisseur_id FROM fournisseurs WHERE fournisseur_nom='LebanoCop'),
(SELECT marque_id FROM marques WHERE marque_nom='Hyper-Products'),
(SELECT categorie_id FROM categories WHERE categorie_nom='viandes'),
'Mortadella', 2000, 'tres delicieuse', 100, '25-MAY-2012', '25-MAY-2013')
与原始SQL相比,每个子查询周围都需要一组额外的括号。这避免了加入不可归结果集的任何问题。
在一般情况下,在尝试选择要插入的可能大量行的情况下,根本不会使用VALUES子句,只会在INSERT列列表后列出SELECT语句:
INSERT INTO produits(produit_id, ...)
SELECT ...