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')

这能行吗?我收到缺少表达式的错误。我正在使用甲骨文。

4

1 回答 1

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 ...
于 2012-06-03T19:15:19.923 回答