首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按特定顺序更新具有条件的表

按特定顺序更新具有条件的表
EN

Stack Overflow用户
提问于 2016-12-07 08:59:33
回答 1查看 35关注 0票数 1

我已经搜索了我的问题,测试了一些子查询和导出表方法的案例陈述,但没有得到结果。也许你能帮忙?谢谢。

下面的例子只是一个例子。

代码语言:javascript
复制
# generate the table as it is 
DROP TABLE IF EXISTS `IN`;
CREATE TABLE `IN`
(`Part` CHAR(1),
`Warehouse` INT(1), 
`Percentage` INT(1),
`Update` INT(1));

#some values for the table
INSERT INTO `IN`
(Part, Warehouse, Percentage)
VALUES 
  ('A' , 1, 80),
  ('A',  2, 100),
  ('A',  3, 50),
  ('B',  1, 100),
  ('B',  2, 50),
  ('B',  3, 100);

 # generate table as it should be
 DROP TABLE IF EXISTS `OUT`;
 CREATE TABLE `OUT`
 (`Part` CHAR(1),
  `Warehouse` INT(1),
  `Percentage` INT(1),
  `Update` INT(1));

 # values for the table
 INSERT INTO `OUT`
 (Part, Warehouse, Percentage, `Update`)
  VALUES 
  ('A' , 1, 80, 2),
  ('A',  2, 100, 2),
  ('A',  3, 50, 2),
  ('B',  1, 100, 3),
  ('B',  2, 50, 3),
  ('B',  3, 100, 3);

如果百分比为100,我希望在特定部分的Update列中添加特定的仓库名称。

仓库的值应该填充到特定部分的每一行。

更新列的填充计算应按特定顺序进行。因此,首先,应该有一个检查,如果仓库3有100,并采取这个价值。如果3号仓库只有50个,那么检查一下2号仓库,如果它有100个。

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-07 09:44:57

有一个办法..。

代码语言:javascript
复制
DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(Part CHAR(1)
,Warehouse INT NOT NULL
,Percentage TINYINT NOT NULL
);

INSERT INTO my_table
(Part, Warehouse, Percentage)
VALUES 
  ('A' , 1, 80),
  ('A',  2, 100),
  ('A',  3, 50),
  ('B',  1, 100),
  ('B',  2, 50),
  ('B',  3, 100);

SELECT w1.*, COALESCE(w3.warehouse,w2.warehouse,w1.warehouse) warehouse 
  FROM my_table w1 
  LEFT 
  JOIN my_table w2
    ON w2.part = w1.part 
   AND w2.warehouse = 2 
   AND w2.percentage = 100
  LEFT 
  JOIN my_table w3
    ON w3.part = w1.part 
   AND w3.warehouse = 3 
   AND w3.percentage = 100;

+------+-----------+------------+-----------+
| Part | Warehouse | Percentage | warehouse |
+------+-----------+------------+-----------+
| A    |         1 |         80 |         2 |
| A    |         2 |        100 |         2 |
| A    |         3 |         50 |         2 |
| B    |         1 |        100 |         3 |
| B    |         2 |         50 |         3 |
| B    |         3 |        100 |         3 |
+------+-----------+------------+-----------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41013149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档