从选择结果更新

时间:2014-07-24 02:36:25

标签: mysql sql sql-update

我尝试使用以下查询更新项目表中基于字段tbl的颜色的表item_id中的颜色。但我收到错误Sql error (1242)

update tbl mt
left join tbl_detail dt on mt.tbl_No = dt.tbl_No 
set dt.color_Id = 
(
    select p.color_ID
    from ( select dt.item_Id, dt.color_Id 
            from tbl mt
                left join tbl_detail dt on mt.tbl_No = dt.tbl_No 
             where mt.Tipe = 2 ) h
    left join itemp on h.item_id = p.item_id
) 
where mt.Tipe = 2 ;

我想使用item表中的现有颜色更新表tbl中的字段颜色。我该怎么做?

我尝试过这样一个简单的语法,但后来我得到了sql error (1442)

update tbl mt 
   left join tbl_detail dt on mt.tbl_No = dt.tbl_No 
   left join item p on dt.item_Id = p.item_Id 
set dt.color_Id = p.color_id 
where mt.Tipe = 2 ;

示例:

表格tbl:

|tbl_No|tipe|
   1     2  
   2     2
   3     2

表tbl_detail:

|tbl_detail_No|tbl_No|item_id|color_id|
        1         1      1     null
        2         1      2     null
        1         2      3     null
        2         2      4     null

表项:

|item_id|color_id|
     1       1
     2       2
     3       3
     4       4

我想根据表color_id中的tbl_detail更新表item_id中的item;更新后,表tbl_detail应如下所示。

表tbl_detail:

|tbl_detail_No|tbl_No|item_id|color_id|
        1         1      1       1
        2         1      2       2
        1         2      3       3
        2         2      4       4

(哦,我真的很难解释它,希望有人能理解,因为英语不是我的第一语言。) 感谢所有的帮助和建议。

0 个答案:

没有答案