SQL不同的查询取决于if结果

时间:2014-03-21 00:00:07

标签: mysql sql if-statement

我想做一个查询,根据一个参数的char_length应该选择一个或另一个表。它应该是这样的,但我知道这根本不正确,并且存在我无法找到的语法错误。

SELECT IF (
CHAR_LENGTH('var44') < 3,
name FROM nets WHERE code = 'var44',
name FROM variable WHERE id = (SELECT SUBSTRING('var44',4)) 
);

有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:1)

这对您来说是一个解决方案:

select name from nets WHERE code = 'var44' and CHAR_LENGTH('var44') < 3
union
select name FROM variable WHERE id = (SELECT SUBSTRING('var44',4)) and CHAR_LENGTH('var44') >= 3

或强制if语句?

答案 1 :(得分:0)

正如GhostGambler所说,为什么不用php做这个?

if (strlen($var44)<3) {
    $sql = mysql_query("SELECT name FROM nets WHERE code = '$var44'");
} else {
    $var44 = substring($var44, 4);
    $sql = mysql_query("SELECT name FROM variable WHERE id = '$var44'");
}