2016-07-09 18 views
1

私はgrand_ totalフィールドを保持する 'quot_items'というテーブルを持っています。この構造を持っていますmysqlの別のテーブルの値に基づいてあるテーブルのカラムを更新する

tender_id | grand_total 
15001   100000 
15002   250000 
15003   1500000 
16009   4500000 

「カテゴリ」フィールドを保持する「引用」という別のテーブルがあります。それはこの構造を持っています。

tender_id | category 
15001   H 
15002   E 
15003   B 
16009   A 

私は一定の条件がある中でMYSQLでのUPDATE文を必要とつらいIAMは何ですか:

手段IF [GRAND_TOTAL '] < '100000')[カテゴリのH(もしテーブルのGRAND_TOTAL値その後、 'H' としてテーブル '引用' カテゴリフィールドを更新< 100000 'でquot_items'

IF([ 'GRAND_TOTAL']> = '100000')& &([ 'GRAND_TOTAL'] < = '200000')カテゴリ 'G'。

& &(['grand_total'] < = '600000')の場合は、 'F'カテゴリになります(['grand_total']> '200000')。

([ 'GRAND_TOTAL']> '600000')& &([ 'GRAND_TOTAL'] = '1000000' <)[カテゴリ 'E' の場合。

([ 'GRAND_TOTAL']> '1000000')& &([ 'GRAND_TOTAL'] = '1500000' <)[カテゴリ 'D' の場合。

さらに条件があります。 1つの更新ステートメントで自分のDBを更新できるように、MYSQLでこれを行うためのクエリが必要です。誰でも私を助けることができるPls。

私は次のことを試してみました:

UPDATE quotation INNER JOIN quotation_items ON quotation.tender_id = quotation_items.tender_id 
SET quotation.category = (
    CASE WHEN quotation_items.grand_total < 100000 then 'H' 
    WHEN quotation_items.grand_total >= 100000 && quotation_items.grand_total <= 200000 then 'G' 
    WHEN quotation_items.grand_total > 200000 && quotation_items.grand_total <= 600000 then 'F' 
    WHEN quotation_items.grand_total > 600000 && quotation_items.grand_total <= 1000000 then 'E' 
    WHEN quotation_items.grand_total > 1000000 && quotation_items.grand_total <= 1500000 then 'D' 
    END 
); 

答えて

1

はこれを試してみてください:

UPDATE quotation t1 
INNER JOIN quot_items t2 
ON t1.tender_id = t2.tender_id 
SET t1.category = 
    CASE WHEN t2.grand_total < 100000 THEN 'H' 
    WHEN grand_total >= 100000 AND grand_total <= 200000 THEN 'G' 
    WHEN grand_total > 200000 AND grand_total <= 600000 THEN 'F' 
    WHEN grand_total > 600000 AND grand_total <= 1000000 THEN 'E' 
    WHEN grand_total > 1000000 AND grand_total <= 1500000 THEN 'D' 
    ELSE t1.category 
    END 
+0

ありがとうございました。 –

1

CASE表現を使用してください。

クエリ

SELECT tender_id, 
CASE WHEN grand_total < 100000 then 'H' 
WHEN grand_total >= 100000 && grand_total <= 200000 then 'G' 
WHEN grand_total > 200000 && grand_total <= 600000 then 'F' 
WHEN grand_total > 600000 && grand_total <= 1000000 then 'E' 
WHEN grand_total > 1000000 && grand_total <= 1500000 then 'D' 
END AS Category 
FROM quot_items; 

そして、あなたはcategory列を更新する場合。その後、

UPDATE quot_items 
SET category = (
    CASE WHEN grand_total < 100000 then 'H' 
    WHEN grand_total >= 100000 && grand_total <= 200000 then 'G' 
    WHEN grand_total > 200000 && grand_total <= 600000 then 'F' 
    WHEN grand_total > 600000 && grand_total <= 1000000 then 'E' 
    WHEN grand_total > 1000000 && grand_total <= 1500000 then 'D' 
    END 
); 
+0

ありがとうございました。はい、私は更新ステートメントを探しています。しかし、私はここで2つのテーブルを使用して、私はquot_itemsテーブルからデータを検証することを意味し、私は引用符で更新する必要があります。 –

+0

これで 'join 'を使う必要があります。 – Wanderer

関連する問題