0
如何解决?IF -condition ERROR 1241(21000):操作数应该包含1列
mysql> SELECT IF(1,(SELECT * FROM zd LIMIT 1) ,(SELECT * FROM zd LIMIT 3));
ERROR 1241 (21000): Operand should contain 1 column(s)
mysql>
谢谢。
如何解决?IF -condition ERROR 1241(21000):操作数应该包含1列
mysql> SELECT IF(1,(SELECT * FROM zd LIMIT 1) ,(SELECT * FROM zd LIMIT 3));
ERROR 1241 (21000): Operand should contain 1 column(s)
mysql>
谢谢。
错误代码比起初看起来更具信息性。
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_name
和col2_name
你希望从中获取数据为准列。
====
现在,我再次看了你的问题,我看到你实际上要做的是实现条件限制。我只想做,在PHP或任何语言,你要查询和数据库,如果可能的话:
$limit = $bool ? 1 : 3;
$mysql->prepare("SELECT * FROM zd LIMIT $limit");
$mysql->execute();
$result = $mysql->fetch(PDO::FETCH_ASSOC)
我不知道还有有条件地设置不变量的MySQL中的限制的一种方式。