我收到错误
执行此SQL命令时子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
:
select *
from Person p
where p.reference_no like (select referencenumber from Reference)
我的Reference
表格中有一列referencenumber
,如下所示
答案 0 :(得分:1)
您可以像这样使用exists()
:
select *
from Person p
where exists (
select 1
from Reference r
where p.reference_no like r.referencenumber
)
另外,为什么使用like
代替=
?如果你想进行部分比较,不应该是like '%'+r.referencenumber+'%'
?
答案 1 :(得分:0)
尝试不同的东西
select * from Person p where
EXISTS
(select r.referencenumber from Reference r
WHERE p.reference_no like r.referencenumber )
答案 2 :(得分:0)
您可以根据条件使用联接
select p.*
from Person p
inner join Reference r on p.reference_no like (r.referencenumber )
或者(因为您不使用wildchar)可以在
中使用select * f
rom Person p
where p.reference_no in (select referencenumber from Reference)
答案 3 :(得分:0)
您可以使用exists
执行此查询:
select p.*
from Person p
where exists (select 1
from Reference r
where p.reference_no like r.referencenumber
);
但是,如果您不使用通配符,则in
就足够了。