在select语句

时间:2015-09-25 03:18:47

标签: php mysql database sql-like

我有一个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 个答案:

答案 0 :(得分: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