2017-07-18 38 views
-1

我想用「year_from」和「year_to」數據「模型名稱」更新選擇特定行,但我已經對隨機MODEL_ID 6K的車型,所以我想更新型號名稱匹配MODEL_ID。如果我刪除line'where model_id = 2',它將用最小值和最大值更新整個表格。我怎樣才能修改這個查詢?更新CONCAT在MySQL

UPDATE lc_vehicles2 
SET model_name = concat(model_name, ' (', (
SELECT MIN(year_from) 
FROM (SELECT * FROM lc_vehicles2) AS VEHICLES 
WHERE model_id = 2),'-', (
SELECT MAX(year_to) 
FROM (SELECT * FROM lc_vehicles2) AS VEHICLES 
WHERE model_id = 2),')') 

表結構:

brand_id | brand_name | model_id | model_name | year_from | year_to 
502  | audi  | 2288  | A6   | 1999.06 | 2006.01 
145  | volvo  | 2154  | S60  | 2006.06 | 2012.12 
+0

使用[製備語句](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php):'WHERE MODEL_ID ='或'WHERE MODEL_ID =:id',(取決於你更喜歡什麼)。或者我誤解了你的問題? –

+0

你能否在你的問題中分享表格結構? –

+0

我的意思是我希望它可以根據model_id上傳model_name。我有6k模型,隨機數字爲model_id,每個模型都有隨機數字的dublicates。我想知道如何自動解決這個問題,而無需每次都輸入model_id。 – JoeDoe

回答

0
UPDATE lc_vehicles2 VH 
INNER JOIN 
(
    SELECT MIN(year_from) MIN_YEAR,model_id FROM lc_vehicles2 GROUP BY model_id 
)MIN_TABLE ON MIN_TABLE.model_id=VH.model_id 
INNER JOIN 
(
    SELECT MAX(year_to) MAX_YEAR,model_id FROM lc_vehicles2 GROUP BY model_id 
)MAX_TABLE ON MAX_TABLE.model_id=VH.model_id 
SET model_name = CONCAT(VH.model_name,'(',MIN_TABLE.MIN_YEAR,'-',MAX_TABLE.MAX_YEAR,')') 

嘗試上述查詢。

+0

太棒了!非常感謝你。只要編輯SELECT MAX以選擇「year_to」,以防其他人發現此答案。 – JoeDoe