2015-07-01 75 views
0

汽車MySQL的CASE WHEN CASE內。當

Make | Model | Year | Color 
Honda | Accord | 12  | Red 
Lexus | IS | 14  | Blue 

我喜歡收到這些文件,必須做出一定標題行的參數相匹配之前,我把它送上一個PHP腳本。

我現在有一個SELECT CASE時檢查其他錯誤,如代碼空白:

SELECT 
CASE 
WHEN a.Make = '' THEN '**BLANK**' 
ELSE a.Make 
END as Make, 

難道有內一個SELECT,我可以使用,以確保接收的文件頭(和唯一標題)匹配我們的標題?

+1

你試過了嗎?代碼在哪裏? –

+2

您發佈了一些示例數據。 「標題」是什麼意思?表格有行和列。列被命名。你的意思是文件中的「列名」?或者它是一個文件它自己是一個「標題」的一些細節文件? –

+0

@KarolyHorvath我試過這段代碼,但它運行的是替換所有行中的值的風險,我只是想要它替換第1行中的值。 – bennyharassi

回答

0

我認爲沒有必要這樣做。在這種情況下,您也可以在此提及您的conds。類似

CASE 
WHEN a.Make = '' THEN '**BLANK**' 
ELSE a.Make 
WHEN a.Make <> '' AND a.Make <> 'Make' THEN 'ANOTHER' 
ELSE a.make 
WHEN a.Model <> '' AND a.Model <> 'Model' THEN 'ANOTHER' 
ELSE a.Model 
..... etc. 

我認爲這個腳本可以爲你工作。

+0

我想這個,但它看起來像1 CASE中的多個ELSE命令在MySQL – bennyharassi

1

糾正我。但根據我的理解,您希望有一個包含與列標題相同名稱的記錄。

CASE WHEN答。= '' THEN 'BLANK' WHEN答。<> '製作' OR a.Model <> '模型' THEN '無' WHEN。 .. .. ELSE答。 ...

+0

Yupp中產生一個錯誤。這也可能是您的問題的一個解決方案。 –

0

也許你應該嘗試類似:

SET @make := (SELECT a.Make FROM cars a WHERE ...); 
SET @model := (SELECT a.Model FROM cars a WHERE ...); 

IF @make = 'Make' AND @model = 'Model' AND ... THEN 
#continue your script 
ELSE 
#end your script 
END IF;