2015-09-25 61 views
1

我有一條SELECT語句,根據它找到的匹配返回數據庫中的行。但是,我想稍微改變這個SELECT語句。取而代之的是獲得所有比賽,並將其加起來以獲得所有比賽的最終數量,但我希望在比賽結束後停止添加比賽。我有一個例子,下面的代碼,這將在更詳細的解釋:在選擇語句中使用匹配的第一個匹配計數

$text1 = "IF (input LIKE '% i am here %', 3, 0)"; 
$text2 = "IF (input LIKE '% i am %', 2, 0)"; 
$text3 = "IF (input LIKE '% i %', 1, 0)"; 

SELECT colName, $text1+$text2+$text3 as 'matches' 
FROM tableName 

有文字" i am here ";

與目前的SELECT語句一行時,它會得到3 + 2 + 1 = 6個匹配項。但不是6場比賽,我只想要第一場比賽的比賽,這是3場。所以,如果SELECT語句找到匹配,我希望它停止,並且只使用匹配的匹配計數,而不是使用其餘比賽的比賽數。如果可能,我該怎麼做?

回答

1

嘗試使用CASE WHEN運算符。

試試這個:

$text1 = "CASE WHEN input LIKE '%i am here %' THEN 3 
      ELSE 
       CASE WHEN input LIKE '% i am %' THEN 2 
       ELSE 1 
       END 
      END "; 
SELECT colName, $text1 as 'matches' 
FROM tableName 

SQL Fiddle

+0

爲什麼你有2結束了嗎? – jessica

+0

你好?你在嗎? – jessica

+1

因爲那裏有2個Case操作符...這就是爲什麼需要2個END – Nic