mysql SELECT查询语法问题

时间:2017-06-15 05:31:31

标签: mysql sql operand

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

该查询将引发以下错误消息。

  

1241 - 操作数应包含1列

我该如何解决?

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

而不是*你应该提供列名。

SELECT * FROM question WHERE que_id =(从emp_qusans中选择 [column_name] ,其中emp_id = 9且ans!= 3)

答案 2 :(得分:0)

您的查询中有两个问题

  

使用in子句而不是=   您的子查询返回完整的表emp_qusans,请从此表中指定一列。

您的查询将是这样的

SELECT * FROM question WHERE que_id in(从emp_qusans eq中选择eq.column1,其中eq.emp_id = 9和eq.ans!= 3)

答案 3 :(得分:0)

SELECT * FROM question WHERE que_id =(从emp_qusans中选择[column_name],其中emp_id = 9且ans!= 3)

答案 4 :(得分:0)

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

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

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