1

这一直让我想知道,

可以说我有这种情况:

select (...long sub query..) - (...long sub query..)

而且我想设置-条件,这意味着有时会-,有时+,有没有简单的方法可以做到这一点?我知道的方式是:

select if(condition,(...long sub query..) - (...long sub query..),
   (...long sub query..) + (...long sub query..))

这使得查询更难阅读和维护,或者将其放入存储过程中,我不希望这样做。

我可以将算术运算放在某种 var 中并以某种方式连接它吗?

我想要达到的目标是:

select (...long sub query..) if(condition,-,+) (...long sub query..)
4

3 回答 3

5

不,你不能。

但是,您可以改用乘法:

(...) + IF(..., -1, +1) * (...)
于 2013-03-14T15:23:41.310 回答
0

您可以将每个子查询保存在一个变量中,然后使用IF.

SELECT @a:=(...long sub query..), @b:=(...long sub query..),
  IF(condition, @a-@b, @a+@b) AS result

MySQL 变量的文档:http: //dev.mysql.com/doc/refman/5.0/en/user-variables.html

于 2013-03-14T15:23:48.517 回答
-1

didn't much understand your question but you can store any character in string or char variable and use it to concatenate in your statement

于 2013-03-14T15:26:38.580 回答