【问题标题】:SQL Update based on and Select Result From Same TableSQL 更新基于并从同一个表中选择结果
【发布时间】:2012-07-09 18:57:56
【问题描述】:

我将尽我所能清楚地描述我正在尝试做的事情。

我正在使用 DBISAM SQL 数据库。

我们出售 T 恤,种类繁多。我正在尝试使用数据库中其他产品的值更新我们的产品数据库。这是一个示例:

产品表

SKU           Product      LongDesc
01-S          01           Great Looking T-Shirt
01-M          01           
01-L          01
02-S          01           
02-M          01           Amazing Ladies T
02-L          01
03-32         03           Long t
03-34         03
03-36         03

我想编写一个更新脚本来更新所有没有 LongDescSKU 上的 LongDesc 字段但我希望从其他 SKU 的具有相同 Product

LongDesc

最后我希望桌子看起来像这样:

SKU           Product      LongDesc
01-S          01           Great Looking T-Shirt
01-M          01           Great Looking T-Shirt
01-L          01           Great Looking T-Shirt
02-S          01           Amazing Ladies T          
02-M          01           Amazing Ladies T
02-L          01           Amazing Ladies T
03-32         03           Long t
03-34         03           Long t
03-36         03           Long t

提前感谢您的帮助!

【问题讨论】:

    标签: sql select nested dbisam


    【解决方案1】:

    试试这个:

    UPDATE p
    SET p.longdesc = pp.longdesc
    FROM products p
    INNER JOIN 
    (
        SELECT a.sku, MAX(a.longdesc) AS longdesc
        FROM
        (
            SELECT LEFT(sku FOR (POS('-', sku) - 1)) AS sku, longdesc
            FROM products
        ) a
        GROUP BY a.sku
    ) pp ON LEFT(p.sku FOR (POS('-', p.sku) - 1)) = pp.sku
    

    【讨论】:

    • 嗨 Zane,产品并不总是 2 位数字,它们的长度范围可以是 4 到 8 个字符。
    • @GaryFoster,只要它在- 之前?
    • 它也不总是在破折号之前。部分产品样本为 0001-112、0001-114、0002-2、0555-98、0555-96
    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 2016-05-14
    • 2016-07-03
    • 2015-09-19
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多