我看到的这个问题与我MySQL INSERT IF (custom if statements)几乎一样。
但是我没有成功执行此查询:
INSERT into cart_items (product_id,product_variant_id,product_attribute_id,cart_id,quantity)
select (7,7,12,11,4)
where (select pa.stock from product_attribute as pa where pa.id = 12) > 4
在这种情况下,这是(product_id,product_variant_id,product_attribute_id,cart_id,数量)的(7,7,12,11,4)值
product_id:7
product_variant_id:7
product_attribute_id:12
购物车ID:11
数量:4
在我的headiSQL中,我出现了这样的错误:
SQL(错误(1241):操作数应包含1列
表格cart_items
ID : Primary key autoincrement
product_variant_id : Foreign key
product_attribute_id : Foreign key
product_id : Foreign key
cart_id : Foreign key
quantity :int
表product_attribute
ID : Primary key autoincrement
product_id : Foreign key
product_variant_id :Foreign key
size : varchar
stock : int
我想查询cart_items 数量是否小于 product_attribute 库存比插入
答案 0 :(得分:0)
INSERT into cart_items (product_id,product_variant_id,product_attribute_id,cart_id,quantity)
SELECT product_id,product_variant_id,product_attribute_id,cart_id,quantity FROM product_attribute
WHERE id = ? && (SELECT stock from product_attribute WHERE id = ?) > (SELECT quantity FROM cart_items WHERE product_id = ?)
这可确保库存数量大于购物车数量。确保产品ID匹配(?)
此外,我不确定您是否打算从SELECT执行INSERT,但是由于您在示例中提供了原始整数值,因此我将其更改为INSERT(列)VALUES(值),因为这是基于正确格式的在您的示例中。
答案 1 :(得分:0)
尝试从虚拟DUAL
表中进行选择:
INSERT into cart_items (product_id, product_variant_id, product_attribute_id,
cart_id, quantity)
SELECT 7, 7, 12, 11, 4
FROM dual
WHERE (SELECT pa.stock FROM product_attribute pa WHERE pa.id = 12) > 4;
我不知道上面的逻辑是否是您真正打算运行的逻辑,但是它至少应该在没有语法错误的情况下运行。