我的数据库项目包含其规格(ID,名称,长度,身高,体重,数量等)。
我想
SELECT id, name, length*3 + height*5 as 'newVar'
FROM items
ORDER BY newVar DESC
但是,为了让我的公式在newVar
的计算中起作用,如果'length'小于10,我希望它在计算中反映为10。 “高度”也是如此:如果它大于10,我需要在计算中将其反映为10.
我怎样才能做到这一点?
答案 0 :(得分:4)
您可以使用几个CASE
条件完成此操作,如果10
或length
分别为height
或< 10
,则返回> 10
。
SELECT
id,
name,
((CASE WHEN length < 10 THEN 10 ELSE length END) * 3 +
(CASE WHEN height > 10 THEN 10 ELSE height END) * 5) AS newVar
FROM items
ORDER BY newVar DESC
答案 1 :(得分:1)
一种选择是使用IF
(取决于您的RDBMS):
SELECT id,
name,
if(length<10,10,length)*3 + if(height>10,10,height)*5 as 'newVar'
FROM items
ORDER BY newVar DESC
或者您可以使用CASE
:
SELECT id,
name,
case when length<10 then 10 else length end * 3 +
case when height>10 then 10 else height end * 5 as 'newVar'
FROM items
ORDER BY newVar DESC
答案 2 :(得分:0)
可以更简单:
SELECT id, name, GREATEST(length, 10) * 3 + LEAST(height, 10) * 5 AS newVar
FROM items
ORDER BY newVar DESC
GREATEST
和LEAST
不在SQL标准中,但大多数RDBMS都有它们。