MYSQL-如果值大于或小于库存则插入

时间:2019-01-14 01:22:09

标签: mysql

我看到的这个问题与我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 库存比插入

2 个答案:

答案 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;

我不知道上面的逻辑是否是您真正打算运行的逻辑,但是它至少应该在没有语法错误的情况下运行。