如何修复?
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 语句采用三个参数: bool 值、 bool 值为真时返回的标量 值和 bool 值为假时返回的标量值。
您的选择子查询各返回一行。您必须只返回一个值,如下所示:
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 中设置限制。
我是一名优秀的程序员,十分优秀!