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;
输出:
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
。这是一个等待发生的错误。它仅根据字段名称连接表——它甚至不使用声明的外键。相反,将键放在 using
或 on
子句中。
我想给我显示每个买家的订单量。这非常有效。
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;
输出:
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
。这是一个等待发生的错误。它仅根据字段名称连接表——它甚至不使用声明的外键。相反,将键放在 using
或 on
子句中。