Mysql 两个表中两列之间的Case语句

Mysql 两个表中两列之间的Case语句,mysql,Mysql,我正在尝试写一个case语句,或者使用MySQL中的任何语句,如果变量=true,它们将打印出一个值。 基本上,在我的select语句中,如果一个表中的值是10,则在新列中显示一个值 我想用这样的东西: 案例表1.10时付款,然后表2.1按计划结束 上述操作不起作用,并且存在语法错误。我能做些什么来达到我想要的结果?在你的情况下,我认为使用IF是最佳的,因为它是检查它是否为10的一个选项,并且这样检查是否更快 IF(table1.payment=10,table2.type,table1.pay

我正在尝试写一个case语句,或者使用MySQL中的任何语句,如果变量=true,它们将打印出一个值。 基本上,在我的select语句中,如果一个表中的值是10,则在新列中显示一个值

我想用这样的东西:

案例表1.10时付款,然后表2.1按计划结束


上述操作不起作用,并且存在语法错误。我能做些什么来达到我想要的结果?

在你的情况下,我认为使用IF是最佳的,因为它是检查它是否为10的一个选项,并且这样检查是否更快

IF(table1.payment=10,table2.type,table1.payment) AS plan
了解更多信息

选项用例如下所示:

(CASE
WHEN table1.payment=10 THEN table2.type
ELSE table1.payment
END) AS plan
了解更多信息

一次检查和案例查询的执行时间比较:

更大的结果

较小的结果


表达式末尾缺少END关键字:CASE table1.payment WHEN 10然后是table2.type END AS planCASE。。。END是一个表达式,而不是一个语句。表达式可以在语句的上下文中使用,例如SELECT语句。试图以SQL语句的形式执行事例表达式将导致语法错误。尝试类似于选择案例table1.payment WHEN 10然后table2.type ELSE NULL END AS plan FROM table1 LEFT JOIN table2 ON。。。哪里虽然我接受一个案例比多个ifs快的一般说法,但if比单个案例快并不明显。你有任何证据支持这一主张吗?答案中增加了证据。