嵌套选择sql错误操作数应包含1列

时间:2014-11-05 14:54:58

标签: mysql

我尝试执行此查询:

select *, (select * from tab1 where tab1.type!="firstype") as P
from tab2 where tab2.attr="something" and tab2.tab1_id=P.id

但我有这个错误:

Error Code: 1241. Operand should contain 1 column(s)    0,001 sec

我理解错误但不是为什么出来。 P.id不起作用?

2 个答案:

答案 0 :(得分:1)

将您的查询更改为: -

SELECT * 
FROM Tab1 P, Tab2
WHERE tab2.tab1_id=P.id
AND tab2.attr = "something"
AND tab1.type != "firstype"

答案 1 :(得分:0)

您的from子句位置错误。而且,您应该使用显式join语法。除此之外,它还有助于防止出现此类错误:

select *
from tab2 join
     tabl p
     on tab2.tab1_id = P.id and
        tab2.attr = 'something' and
        p.type <> 'firstype';

您也不需要子查询。过滤条件可以放在外部查询的onwhere子句中。