【问题标题】:mysql SELECT query syntax issuemysql SELECT查询语法问题
【发布时间】:2017-06-15 05:31:30
【问题描述】:
SELECT * FROM `question` WHERE que_id =(select * from emp_qusans where emp_id=9 and ans!=3)

查询抛出以下错误消息。

1241 - 操作数应包含 1 列

我该如何解决?

【问题讨论】:

  • 不知道emp_qusans表的结构,无法给出准确答案。
  • OK 检查此链接以了解表结构。 ibb.co/kOOpL5

标签: mysql sql operand


【解决方案1】:

请确保您的子查询返回一行,并且您需要在子查询中使用列名而不是 *。

SELECT *
FROM question
WHERE que_id = (select [column name] 
                from emp_qusans 
                where emp_id=9 and ans!=3)

【讨论】:

    【解决方案2】:

    根据您与我们共享的表结构,您可能打算在子查询中选择qid 列:

    SELECT *
    FROM question
    WHERE que_id = (SELECT qid FROM emp_qusans WHERE emp_id = 9 AND ans != 3)
    

    顺便说一句,您遇到的操作数错误是因为 SELECT * 返回 多个 列(读取:值),但您试图将其与单个标量列进行比较。显然,这没有任何意义。

    【讨论】:

      【解决方案3】:

      您应该提供列名,而不是 *。

      SELECT * FROM question WHERE que_id =(select [column_name] from emp_qusans where emp_id=9 and ans!=3)

      【讨论】:

        【解决方案4】:

        您的查询中有两个问题

        使用 in 子句代替 = 您的子查询返回全表 emp_qusans,请从该表中指定一列。

        你的查询应该是这样的

        SELECT * FROM question WHERE que_id in (select eq.column1 from emp_qusans eq where eq.emp_id=9 and eq.ans!=3)

        【讨论】:

          【解决方案5】:

          SELECT * FROM question WHERE que_id =(select [column_name] from emp_qusans where emp_id=9 and ans!=3)

          【讨论】:

            猜你喜欢
            • 2020-09-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-01-23
            • 2013-02-06
            • 2023-04-11
            • 1970-01-01
            • 2011-03-24
            相关资源
            最近更新 更多