MySQL将一行乘以一个变量

MySQL将一行乘以一个变量,mysql,Mysql,我试图将一行乘以一个变量(计算量): 计算“servingsMultiplier”和“servingSizeMultiplier”的值 当我使用一个常数(例如,2)时,上述方法有效;但是,当我使用变量时,情况并非如此。我收到错误消息: “recipePDF中的SQLException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知 “字段列表”中的“servingsMultiplier”列 如果要使用mysql变量,请在

我试图将一行乘以一个变量(计算量):

计算“servingsMultiplier”和“servingSizeMultiplier”的值

当我使用一个常数(例如,2)时,上述方法有效;但是,当我使用变量时,情况并非如此。我收到错误消息:

“recipePDF中的SQLException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知 “字段列表”中的“servingsMultiplier”列


如果要使用mysql变量,请在变量名之前添加
@

SELECT ci_id, cr_id, ci_ingedient, (ci_amount*@servingsMultiplier) AS ci_amount,
(ci_unit*@servingSizeMultiplier) AS ci_unit
FROM at_cat_ingredient 
WHERE cr_id = @id
ORDER BY ci_ingedient;

sql语句中的标识符(如
servingsMultiplier
)不会被识别为变量的值,而是作为列名,当然,列名并不存在。
在语句中使用
占位符作为
servingsMultiplier
servingSizeMultiplier
的占位符,并传递它们的值,就像传递
WHERE
子句中的参数一样:

String selectQry5 = 
    "SELECT ci_id, cr_id, ci_ingedient, " + 
    "(ci_amount * ?) AS ci_amount, " + 
    "(ci_unit * ?) AS ci_unit " +
    "FROM at_cat_ingredient " + 
    "WHERE cr_id = ? " +
    "ORDER BY ci_ingedient;";

这是某种应用程序代码
SELECT ci_id, cr_id, ci_ingedient, (ci_amount*@servingsMultiplier) AS ci_amount,
(ci_unit*@servingSizeMultiplier) AS ci_unit
FROM at_cat_ingredient 
WHERE cr_id = @id
ORDER BY ci_ingedient;
String selectQry5 = 
    "SELECT ci_id, cr_id, ci_ingedient, " + 
    "(ci_amount * ?) AS ci_amount, " + 
    "(ci_unit * ?) AS ci_unit " +
    "FROM at_cat_ingredient " + 
    "WHERE cr_id = ? " +
    "ORDER BY ci_ingedient;";