请帮助我回答这个问题。
如果我有数据库,表名是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/