我尝试执行此查询:
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不起作用?
答案 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';
您也不需要子查询。过滤条件可以放在外部查询的on
或where
子句中。