在sql语句中的where之后使用if else if

时间:2013-05-14 13:30:40

标签: mysql sql

如何在where?之后的sql语句中使用if,else if?

我正在尝试使用php和mysql实现类似的东西:

//pseudocode
$i = 3
select count(id) from products where parent = $foo and type = (if $i = 2 then type = 1, else if i = 3 then type = 2 or 1, else if i = 10 then type = 3)

我该怎么办?

3 个答案:

答案 0 :(得分:1)

使用CASE语句或类似的内容

WHERE OrderNumber LIKE
  CASE WHEN IsNumeric(@OrderNumber) = 1 THEN 
    @OrderNumber 
  ELSE
    '%' + @OrderNumber
  END

或者你可以使用像@N. J. Reed

这样的IF语句

答案 1 :(得分:0)

您需要将IF用作函数:

select count(id) from products 
  where parent = foo and 
  type = if($i = 2, 1,
      if($i = 3, 2,
      if($i = 10, 3,4)));

答案 2 :(得分:0)

如果您使用的是PHP,则可以设置type过滤器以构建查询

$i = 3
$type = "0";
switch ($i)
{
  case 2:
    $type= "1";
    break;
  case 3:
    $type= "2, 1"
    break;
  case 10:
   $type = "10";
   break;
}
$query = "select count(id) from products where parent = $foo and type IN (". $type .")"

我在此示例中使用IN关键字,因为在$ i == 3

的情况下,类型似乎可以有多个值