基于SQL Update并从同一表中选择结果

时间:2012-07-09 18:57:56

标签: sql select nested dbisam

我会尽力清楚地描述我想要做的事情。

我正在使用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

我想写一个更新脚本,它将更新没有 LongDesc 的所有 SKU 上的 LongDesc 字段但我希望用其他 SKU 来实现 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

提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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