MySQL除法结果有几个变量?

MySQL divide result in several variables?

我想给我显示每个买家的订单量。这非常有效。

 select name, count(orderid) from buyer natural join reservation group by buyerid;

我得到两个结果,一个有 12 个订单,另一个有 4 个订单。现在我想按订单数量拆分这两个结果。 例如,所有购买超过 10 件物品的人都应该用“+”分类。那些购买了 < 10 件物品的人应该得到一个 '-'。困难在于 table 预订中只有单个订单,这意味着:A 人订购了一艘船 (Obj1),A 人订购了一张 DVD (Obj2) 等... 此 table 中的订单是单个数据集,没有求和或分组(这就是上面 select 语句的原因)。

但是,我有另一个空 table 来放置 "name" 和 "class",它应该通过使用程序来完成。

像这样:

  create procedure dividing (in decisionpoint int)
  begin
  set @var = select count(orderid) from buyer....group by buyerid;
  -->Error because I get 2 Rows (Allowed is only one, but how can I solve this? I will continue with the logic)
  IF @var >= decisionpoint THEN do....
  ELSE do...
  end;

所以它实际上很简单,但我目前没有看到解决方案......也许你能够解决这个问题。

你可以把你的查询变成一个内部查询,然后再做一个外部查询SELECT来检查你的条件

SELECT name,orders,
       CASE WHEN orders > 10 THEN "+"
            ELSE "-"
            END AS status
FROM
  (select name, count(orderid) as orders
    from buyer 
    natural join reservation 
    group by buyerid
  )AS T;

sqlfiddle

输出:

name    orders  status
A       20        +
B        4        -

根据你所说的,你会写这样的代码:

insert into nameclass(name, class)
    select b.name,
           (case when count(r.orderid) < 10 then '-' else '+' end) 
    from buyer b join
         reservation r
         using (??)
    group by b.buyerid;

您确实不能使用 if 子句,因为它对标量进行操作,但您需要对行进行操作。

注意:不要使用 natural join。这是一个等待发生的错误。它仅根据字段名称连接表——它甚至不使用声明的外键。相反,将键放在 usingon 子句中。