通过mysql查询计算保证金

通过mysql查询计算保证金,mysql,Mysql,我的mysql查询如下,给出了错误 下面是if else SELECT o.id, p.product_name, p.admin_price, co.product_amt_disc, (co.product_amt_disc + product_vat_disc) AS sale_amount, (IF co.retake_flag = 1 THEN ((co.product_amt_disc - (p.admin_price+6))/(co.product_amt_disc))

我的mysql查询如下,给出了错误

下面是if else

SELECT 
o.id,
p.product_name,
p.admin_price,
co.product_amt_disc,
(co.product_amt_disc + product_vat_disc) AS sale_amount,
(IF co.retake_flag = 1 THEN
    ((co.product_amt_disc - (p.admin_price+6))/(co.product_amt_disc))
ELSE 
    ((co.product_amt_disc - p.admin_price)/(co.product_amt_disc))
END IF
) as margin FROM
customer_orders co
    LEFT JOIN
m_products p ON p.id = co.product_id
    LEFT JOIN
    orders o on o.id=co.order_id;
下面是一个案例

SELECT 
o.id,
p.product_name,
p.admin_price,
co.product_amt_disc,
(co.product_amt_disc + product_vat_disc) AS sale_amount,
(CASE WHEN co.retake_flag = 1 THEN
    ((co.product_amt_disc - (p.admin_price+6))/(co.product_amt_disc))
ELSE 
    ((co.product_amt_disc - p.admin_price)/(co.product_amt_disc))
) as margin FROM
customer_orders co
    LEFT JOIN
m_products p ON p.id = co.product_id
    LEFT JOIN
    orders o on o.id=co.order_id;
我得到下面的id错误

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'co.retake_flag = 1 THEN   ((co.product_amt_disc - (p.admin_price+6))/(co.product' at line 7
我的案子有错误

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') as margin FROM     customer_orders co         LEFT JOIN     m_products p ON p.' at line 11
我想代表条件重新获取标志计算百分比。如果还需要什么,请帮助并告诉我
谢谢

我在案例陈述中遗漏了结尾

正确答案如下

SELECT 
o.id,
p.product_name,
p.admin_price,
co.product_amt_disc,
(co.product_amt_disc + product_vat_disc) AS sale_amount,
(CASE WHEN co.retake_flag = 1 THEN
((co.product_amt_disc - (p.admin_price+6))/(co.product_amt_disc))
ELSE 
((co.product_amt_disc - p.admin_price)/(co.product_amt_disc) ) END
) as margin
FROM
customer_orders co
LEFT JOIN
m_products p ON p.id = co.product_id
LEFT JOIN
orders o on o.id=co.order_id;

更新您的问题并添加确切的错误消息如果语法不好:,您需要case/whenhere@DanielE. 我也这么做了,但它无论如何都不起作用,if..else..end if只在存储程序中可用。这里的括号太多了。