mysql - 如何在LEFT OUTER JOIN之后更新

时间:2016-02-26 14:35:49

标签: mysql select

我已经从两个表中创建了一个SELECT:

SELECT  p.products_id, p.gender, f.feature_set_id, f.products_id
FROM products_item_codes AS p
LEFT OUTER JOIN feature_set_to_products AS f ON p.products_id = f.products_id

products_id gender feature_set_id products_íd
       1235 Damen               7        1235
       1236 Damen               7        1236
       1237                  NULL        NULL
       1238 Herren           NULL        NULL
       1239 Herren           NULL        NULL
       1240 Damen               7        1240

如何更新feature_set_id和products_id?

  • 性别='赫伦' ,feature_set_id =' 6'
  • 性别='达曼' ,feature_set_id =' 7'

NULL数据集不存在,我将创建它们。

2 个答案:

答案 0 :(得分:0)

正如@Shadow所评论的那样,你必须INSERT,因为这些行不存在。

但是,如果您希望一次在2个表格中设置值,因为gender来自products_item_codes,而feature_set_id来自feature_set_to_products,您将拥有使用至少 2插入查询。 您应该使用事务,或者在应用程序级别执行插入(即PHP,Perl或您使用的任何语言)

答案 1 :(得分:0)

我会使用insert ... select ...语句来填充feature_set_to_products表。案例陈述可以根据性别来处理插入的相应feature_set_id。

insert into feature_set_to_products (feature_set_id, products_id)
select case when p.gender='Damen' then 7 when p.gender='Herren' then 6 else null end, p.products_id
from products_item_codes p
left join feature_set_to_products AS f ON p.products_id = f.products_id
where p.gender in ('Damen', 'Herren') and f.products_id is null