如何在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)
我该怎么办?
答案 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