【问题标题】:Operand should contain 1 column(s) MySQL [duplicate]操作数应包含 1 列 MySQL [重复]
【发布时间】:2012-08-08 09:38:00
【问题描述】:

请问有人知道这个查询是怎么回事吗?我想要做的是如果elective_modules 表中的courseIDgroup_elective_modules 表中不存在,然后在group_elective_modules 中打印所有退出。但我不断收到错误Operand should contain 1 column(s)

这是我的查询

$alternativeEQuery = 
"SELECT elective_modules.courseID,elective_modules.yr 
 FROM elective_modules
 WHERE elective_modules.yr = '$year1' 
 AND elective_modules.courseID 
 NOT IN 
     (SELECT group_elective_modules.moduleID,group_elective_modules.courseName 
 FROM group_elective_modules 
 WHERE group_elective_modules.courseName = '$courseTitle'
 AND elective_modules.courseID = group_elective_modules.moduleID)";

$alternativeEResult = mysql_query($alternativeEQuery) or die($alternativeEQuery."<br/><br/>".mysql_error());

【问题讨论】:

  • 您有可能受到 SQL 注入攻击。
  • @Joe.我在将它们作为参数传递之前已经转义了上面代码的所有变量!谢谢
  • 如果您使用子查询来提供值,IN() 运算符需要 1 列。您不能选择超过 1 列。如果你仔细想想,这也是合乎逻辑的。
  • @N.B.Thanks,当您提到 IN 运算符时,这确实是有道理的。谢谢!!

标签: php mysql mysql-error-1241


【解决方案1】:

这里的子查询中不能有两列:

(SELECT group_elective_modules.moduleID,group_elective_modules.courseName 
 FROM group_elective_modules 
 WHERE group_elective_modules.courseName = '$courseTitle'
 AND elective_modules.courseID = group_elective_modules.moduleID)

要么使用正确的,要么添加第二个not in 子句并在那里使用另一个列名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 2012-11-26
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多