有人可以告诉我以下MYSQL查询的正确语法:
IF (order_title_1 IS NULL OR order_title_1 = '') WHERE order_id = '$id') THEN
UPDATE orders
SET order_product_id_1='$product_id', order_title_1='$order_title', order_size_1='$size', order_quantity_1= 1
WHERE order_id = '$id'
ELSE
UPDATE orders
SET order_product_id_2='$product_id', order_title_2='$order_title', order_size_2='$size', order_quantity_2= 1
WHERE order_id = '$id'
END IF";
我希望IF语句检查order_title_1在与order_id匹配的特定行中是空还是空。如果列为空,则执行下面的UPDATE语句,但是,如果列IS NOT NULL或为空,则执行ELSE之后的辅助UPDATE语句。
感谢。
--- --- UPDATE
我意识到我的逻辑对我的查询不正确。
在伪代码中,我正在尝试根据框是否为空来向产品框添加细节。
因此,第一次扫描产品时 - 它会将产品放在第一个插槽中,第二次扫描产品时会将产品放在第二个插槽中,第三次扫描产品时会将产品添加到产品中到第三个未占用的插槽等等。在扫描第一个产品时,详细信息将放入所有未占用的插槽中。扫描每个新产品时,下面的未占用插槽全部替换为新产品详细信息。
我需要一种方法来分隔每个查询,以便在前一个广告位被占用时,将产品详细信息按顺序添加到下一个未占用的广告位。我可以为每个产品盒创建一个单独的扫描功能,但我想我可以将它们与某种形式的IF / ELSE语句结合起来。
有人可以提出解决方案吗?
谢谢,
答案 0 :(得分:0)
一种方式:
UPDATE orders
SET order_product_id_1 = IF(order_title_1 IS NULL OR order_title_1 = '', '$product_id' , order_product_id_1),
order_title_1 = IF(order_title_1 IS NULL OR order_title_1 = '', '$order_title' , order_title_1 ),
order_size_1 = IF(order_title_1 IS NULL OR order_title_1 = '', '$size' , order_size_1 ),
order_quantity_1 = IF(order_title_1 IS NULL OR order_title_1 = '', 1 , order_quantity_1 ),
order_product_id_2 = IF(order_title_1 IS NULL OR order_title_1 = '', order_product_id_2, '$product_id' ),
order_title_2 = IF(order_title_1 IS NULL OR order_title_1 = '', order_title_2 , '$order_title' ),
order_size_2 = IF(order_title_1 IS NULL OR order_title_1 = '', order_size_2 , '$size' ),
order_quantity_2 = IF(order_title_1 IS NULL OR order_title_1 = '', order_quantity_2 , 1 )
WHERE order_id = '$id'
但是,此架构似乎是非规范化的,并且可能会将这些项目详细信息分成一个引用它们所属顺序的单独表格。