我有3张桌子x,y,z
x有用户名,全名
y有用户名,通讯,时间
z有fusername,musername
我想选择x.fullname
,x.username
,y.comm
,y.time
内部联接字段为x.username
,y.username
,z.fusername
我对y.username
的输入是z.fusername = 'W'
及其z.fusername
中所有相关条目的位置。
现在,
我尝试创建一个子查询只是为了提取这个名字,但得到了一个错误代码
错误代码:1242。子查询返回的行数超过1行
select fullname from x where username in
(select username from Y where username in
((select musername from tbl_followers where fusername='W'),'W'));
答案 0 :(得分:0)
尝试以下查询,它会正常工作。对于Oracle中的查询,您将获得 ORA-01427:单行子查询返回多行,因为在最内部子查询中,您试图传递常量和动态值(我的意思是什么)要说是你可以传递单个/多个常量值,或者你可以使用子查询)
SELECT fullname
FROM x
WHERE username IN
(SELECT username
FROM Y
WHERE username IN (
(SELECT MUSERNAME FROM TBL_FOLLOWERS WHERE FUSERNAME='W')
)
or username='W');
答案 1 :(得分:0)
由于您要从X和Y中选择列,您可以使用以下查询 -
select x.fullname, x.username, y.comm, y.time
from x, y
where x.username = y.username
and (y.username in
(SELECT MUSERNAME FROM TBL_FOLLOWERS WHERE FUSERNAME = 'W') or
y.username = 'W')
答案 2 :(得分:-1)
您正在"中使用关键字"然后是(在括号中并用逗号分隔):
你做不到。您可以在括号中放置两个值或仅放置查询。
所以解决方案就是像这样转换你的查询:
select fullname from x
where username
in
(
select username from Y
where username in
(
select musername from tbl_followers where fusername='W'
)
or username = 'W'
)