【问题标题】:SQL select ID then use that ID in an updateSQL 选择 ID 然后在更新中使用该 ID
【发布时间】:2020-11-17 12:19:42
【问题描述】:

我有两个简单的 sql 语句,它们都独立工作,但我想将它们链接在一起。我只有产品的 SKU,所以试图从 SKU 中获取 post_id。然后根据 post_id 更新库存数量

这会抓取 post_id

Select post_id from wp_postmeta
where meta_value = 'xxxxxxx'

这会更新库存

UPDATE wp_postmeta
SET meta_value = 1000
WHERE meta_key = '_stock'
AND post_id = RESULT FROM SELECT

我不能只通过 sku 更新库存,因为 woocommerce 将 sku 和库存同时存储为 meta_key 和 meta_value。

环顾四周,看到很多关于更新选定行的事情,但我并没有尝试实现这一点,我正在尝试在更新中使用选择的结果。

另外,这甚至是适用于 SQL 的应用程序,我已经完成了这项工作,但只是返回了选择的结果,在 php 中存储为变量,然后在更新语句中使用。也许这在架构上是正确的?

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 本题与PHP无关,请勿标注。
  • 两个有效点,已修改

标签: mysql sql


【解决方案1】:

在大多数数据库中,您只需使用标准 SQL 语法:

UPDATE wp_postmeta
    SET meta_value = 1000
    WHERE meta_key = '_stock' AND
          post_id IN (SELECT post_id
                      FROM wp_postmeta
                      WHERE meta_value = 'xxxxxxx'
                     );

这不起作用的一个数据库是 MySQL,它可能是您正在使用的数据库。为此,您需要一个明确的JOIN

UPDATE wp_postmeta pm JOIN
       wp_postmeta pm2
       ON pm.post_id = pm2.post_id AND
          pm2.meta_value = 'xxxxxxx'
    SET meta_value = 1000
    WHERE pm.meta_key = '_stock' ;

【讨论】:

    猜你喜欢
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2011-12-10
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多