当前位置: 首页 > 面试题库 >

MySQL Case / If / Then

漆雕昊天
2023-03-14
问题内容

我正在尝试在MySQL中建立查询,在该查询中我具有某种数字的库存水平,并且取决于该库存水平,我希望它返回另一个值,该值将是颜色代码。

例如,如果库存水平<0,则为空;如果库存水平在0至1000之间,则为红色;如果库存水平在1000至5000之间,则为黄色;如果库存水平在5000至10000之间,则为绿色;如果库存水平>
10000,则为空。绿色。

所以这是我的例子。我有一个Beer表,其中包含Beer信息,而BeerStock表中,包含Stock Values。

SELECT Beer.Beer, Beer.Brewery, Beer.Style, Beer.ABV, Beer.Hops, Beer.SRM,
Sum(BeerStock.Quantity)
FROM Beer, BeerStock
Where Beer.Beer = BeerStock.Beer

那会给我这样的东西:

Beer1 Brewery1 Style1 5%, 3, 10, 1238

而且我要

Beer1 Brewery1 Style1 5%, 3, 10, 1238 YELLOW

我似乎根本无法弄清楚这一点,我应该使用CASE还是可以使用IF / THEN类型的东西?

我的SQL技能很生锈,通常我会使用Access并弄乱自动生成的SQL,而不是从头开始写……我可以应付MySQL的基础知识,但不能应付这类事情!

任何建议/指针表示赞赏。

谢谢

安迪


问题答案:

我瘦你的意思是,如果stock > 1000再那么另一种颜色not green

SELECT  Beer.Beer, 
        Beer.Brewery, 
        Beer.Style, 
        Beer.ABV, 
        Beer.Hops, 
        Beer.SRM,
        Sum(BeerStock.Quantity) totalQuantity,
        CASE WHEN Sum(BeerStock.Quantity) < 0 THEN ''
            WHEN Sum(BeerStock.Quantity) BETWEEN 0 AND 999 THEN 'Red'
            WHEN Sum(BeerStock.Quantity) BETWEEN 1000 AND 4999 THEN 'Yellow'
            WHEN Sum(BeerStock.Quantity) BETWEEN 5000 AND 9999 THEN 'GREEN'
            WHEN Sum(BeerStock.Quantity) >= 10000 THEN 'Another Color' 
        END
FROM    Beer
        INNER JOIN BeerStock
            ON Beer.Beer = BeerStock.Beer
-- Where    ..other conditions..

但是如果你真的是那个意思,

SELECT  Beer.Beer, 
        Beer.Brewery, 
        Beer.Style, 
        Beer.ABV, 
        Beer.Hops, 
        Beer.SRM,
        Sum(BeerStock.Quantity) totalQuantity,
        CASE WHEN Sum(BeerStock.Quantity) < 0 THEN ''
            WHEN Sum(BeerStock.Quantity) BETWEEN 0 AND 999 THEN 'Red'
            WHEN Sum(BeerStock.Quantity) BETWEEN 1000 AND 4999 THEN 'Yellow'
            WHEN Sum(BeerStock.Quantity) >= 5000 THEN 'GREEN'
        END
FROM    Beer
        INNER JOIN BeerStock
            ON Beer.Beer = BeerStock.Beer
-- Where    ..other conditions..

还有一件事,您还需要使用GROUP BY子句,否则即使您有不同的记录,您也将只返回一条记录,

SELECT  Beer.Beer, 
        Beer.Brewery, 
        Beer.Style, 
        Beer.ABV, 
        Beer.Hops, 
        Beer.SRM,
        Sum(BeerStock.Quantity) totalQuantity,
        CASE WHEN Sum(BeerStock.Quantity) < 0 THEN ''
            WHEN Sum(BeerStock.Quantity) BETWEEN 0 AND 999 THEN 'Red'
            WHEN Sum(BeerStock.Quantity) BETWEEN 1000 AND 4999 THEN 'Yellow'
            WHEN Sum(BeerStock.Quantity) BETWEEN 5000 AND 9999 THEN 'GREEN'
            WHEN Sum(BeerStock.Quantity) >= 10000 THEN 'Another Color' 
        END
FROM    Beer
        INNER JOIN BeerStock
            ON Beer.Beer = BeerStock.Beer
-- Where    ..other conditions..
GROUP   BY Beer.Beer, 
        Beer.Brewery, 
        Beer.Style, 
        Beer.ABV, 
        Beer.Hops, 
        Beer.SRM


 类似资料:
  • 本文向大家介绍C# if, if...else, if... else if ,包括了C# if, if...else, if... else if 的使用技巧和注意事项,需要的朋友参考一下 示例 该if语句用于控制程序的流程。一条if语句根据Boolean表达式的值标识要运行的语句。 对于单个语句,braces{}是可选的,但建议使用。 该if还可以有一个else条款,将在案件条件的计算结果来执

  • Perl条件语句有助于决策,这需要程序员指定一个或多个要由程序评估或测试的条件,以及在条件被确定为真时要执行的一个或多个语句,以及可选的其他条件如果确定条件为假,则执行语句。 以下是大多数编程语言中的典型决策结构的一般性 - 数字0,字符串'0'和“”,空列表()和undef在布尔上下文中都是false ,所有其他值都为true 。 否定真正的价值! 或not返回特殊的假值。 Perl编程语言提供

  • if语句之后可以跟一个可选的else if...else语句,这对于使用单个if ... else if语句测试各种条件非常有用。 当使用if...else if…else语句时,请记住 - 一个if可以有零个或一个else语句,它必须在任何其他if之后。 如果语句可以有零到多个if,它们必须在else之前。 一旦else if成功,其余的if或else语句都不会被测试。 if ... else

  • if

    if语句计算逻辑表达式并当表达式为真时执行一组语句。可选的elseif和else关键字规定后面的各组语句是否执行。与if搭配的关键字end结束最后一组语句。所有语句都用这4个关键字描绘,且不必用括号。 MATLAB的生成n阶魔方的算法有三种不同情形:n是奇数,n为偶数但不能被4整除,n能被4整除。用下列语句描述。 if rem(n,2) ~= 0 M = odd_magic(n) elsei

  • #if

    #if语句使用布尔表达式,其中,如果布尔表达式为真,则执行if语句中的代码块; 如果布尔表达式为false,则执行else块。 语法 (Syntax) {{#if property-name}} //statement {{else}} //statement {{/if}} 例子 (Example) 下面给出的示例显示了在Ember.js中使用if条件助手。 使用以下代码在app/

  • if

    if宏后跟一个计算为t或nil的test子句。 如果将test子句计算到t,则执行test子句后面的操作。 如果它是nil,则评估下一个子句。 if的语法 - (if (test-clause) (action<sub>1</sub>) (action<sub>2</sub>)) 例子1 (Example 1) 创建一个名为main.lisp的新源代码文件,并在其中键入以下代码。 (setq a

  • if

    基本知识介绍 if 条件判断1: 执行1 elif 条件判断2: 执行2 elif 条件判断3: 执行3 else: 执行4 也就是说没有 else if 它使用的是elif 简写if if x: print('内容是~~~') ps:没有;跟go一样,:和命令前不要加空格。 在Python中并没有 || 和 && 取而代之的是 Python 一般程序语

  • if-then语句是最简单的控制语句形式,经常用于决策和更改程序执行的控制流程。 语法 (Syntax) if-then语句的语法是 - if condition then S 其中condition是布尔值或关系条件, S是简单或复合语句。 if-then语句的示例是 - if (a <= 20) then c:= c+1; 如果布尔表达式condition计算结果为true,那么将执