请帮助我回答这个问题。

如果我有数据库,表名是table1,字段名是示例,它包含5个数字,如下所示:

example
1
2
3
4
5


那么我想用上面的数据库做到这一点:

1*2 = 2
3*2 = 6
4*6 = 24
5*24 = 120
120 * 10% = 12


什么是正确的SQL查询来做到这一点?

非常感谢你

最佳答案

您可以在查询中使用用户定义的变量,如果乘法结果超过100,并且需要将其除以10,则可以这样做

SELECT
CONCAT(example,'*',@mul) `expression`,
@mul := CASE
WHEN @mul* example >100
THEN (@mul* example/10)
ELSE @mul* example END
mul
FROM  Table1,
(SELECT @mul:=1) p
ORDER BY `example`


Fiddle Demo

对于您完全相同的期望结果集,这将起作用

SELECT * FROM
(SELECT
CONCAT(example,'*',@mul) `expression`,
@mul := @mul* example mul
FROM  Table1,
(SELECT @mul:=1) p
 ORDER BY `example`
) t
UNION
SELECT  CONCAT(@mul,'*',' 10% ') `expression`,
(@mul/10) FROM (SELECT @mul) p1


Fiddle Demo

关于mysql - 在数学和Sql查询之间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22929062/

10-12 14:02