2014-11-14 143 views

回答

4

错误代码比起初看起来更具信息性。

Operand should contain 1 columns 

在你的榜样,IF操作,而1(SELECT * FROM zd LIMIT 1),并且(SELECT * FROM zd LIMIT 3)操作数

IF语句有三个参数:布尔值,标量如果布尔值为true,则返回值,如果布尔值为false,则返回标量值。

您选择的子查询每个都返回一行。你必须只返回一个值,就像这样:

SELECT IF(1,(SELECT col1_name FROM zd LIMIT 1) ,(SELECT col2_name FROM zd LIMIT 1)) 

在您更换col1_namecol2_name你希望从中获取数据为准列。

====

现在,我再次看了你的问题,我看到你实际上要做的是实现条件限制。我只想做,在PHP或任何语言,你要查询和数据库,如果可能的话:

$limit = $bool ? 1 : 3; 
$mysql->prepare("SELECT * FROM zd LIMIT $limit"); 
$mysql->execute(); 
$result = $mysql->fetch(PDO::FETCH_ASSOC) 

我不知道还有有条件地设置不变量的MySQL中的限制的一种方式。

相关问题