【问题标题】:Update table data using loop postgres使用循环 postgres 更新表数据
【发布时间】:2019-11-13 18:18:46
【问题描述】:

我有 2 张桌子,stockstore

库存:

|-----------------|                      
|  Id | store_id  |
|-----|-----------|                        
|   1 |           |                                 
|-----|-----------|
|   2 |           |  
|-----|-----------|                                           
|   3 |           |  
|-----|-----------|                              
|   4 |           |                                                             
|-----|-----------|

商店:

|-----------------|
|  Id | name      |
|-----|-----------|
|   21|   aaaa    |  
|-----|-----------|
|   12|    bbbb   |  
|-----|-----------|

我需要遍历 store 表并将其 id 放在 stock 表的 store_id 列中, 结果应该是:

|-----------------|                      
|  Id | store_id  |
|-----|-----------|                        
|   1 |    21     |                                 
|-----|-----------|
|   2 |    12     |  
|-----|-----------|                                           
|   3 |    21     |  
|-----|-----------|                              
|   4 |    12     |                                                             
|-----|-----------|

我尝试了一些例子,例如Postgresql Update inside For Loop

但没有得到解决方案...请帮助

【问题讨论】:

  • 你不想使用循环。循环几乎总是 SQL 中的错误解决方案。您如何确定库存中的每个 id 对应哪个 store_id?
  • 这就像 21 会先走,然后 12 会走,依此类推。
  • 您需要将all 产品添加到all 商店吗?交叉连接。
  • @AbhishekKumar 当说“第一”时,您的意思是按库存订购id?或者是其他东西? “等等”是指交替的?

标签: sql postgresql postgresql-9.1


【解决方案1】:

我有点怀疑这是你真正想要的,但从你的描述来看,答案似乎是这样的:

UPDATE STOCK SET store_id = (CASE WHEN id%2=1 THEN 21 ELSE 12 END);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2018-12-06
    • 2021-12-10
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多