2012-04-03 127 views
0

此查询不返回预期的结果:查询不会返回预期的结果

select users.username,firstname,lastname,nickname,address,mobile,email,gender 
from users 
where 
    username = (select userid from friends where friendid = 'ahmedhosni84') OR 
    (select friendid from friends where userid = 'ahmedhosni84'); 

我希望得到所有关于朋友的信息到指定的用户名和走出只有第一个子查询和我想出来的两个子查询

回答

2

你不能这样做查询,如(并获得期望的结果)

username = 'X' or 'Y' 

你要么必须做

username = 'X' OR username = 'Y' 

或者

username IN ('X', 'Y') 
+0

你的确可以做这样的查询 - 他们可能不会返回所需的结果。 – 2012-04-03 14:33:39

+0

好,编辑。 :) – MichaelRushton 2012-04-03 14:38:40

+0

我有这个错误,当我用你的答案**子查询返回多于1行** 这意味着如果用户有更多的一个朋友,我会有错误,我用你告诉我的两种风格,仍然有这个错误不适用于所有用户当然 – 2012-04-03 15:11:30

0

我认为你正在寻找的语法是:

select users.username,firstname,lastname,nickname,address,mobile,email,gender 
from users 
where 
username IN (select userid from friends where friendid = 'ahmedhosni84') 
or 
username IN (select friendid from friends where userid = 'ahmedhosni84'); 

编辑:用 “IN”,因为这些返回不止一个结果。

+0

我有这个错误,当我用你的答案**子查询返回多于1行** – 2012-04-03 15:05:44

+0

@ Never-BackDown对不起,已编辑。 – Jim 2012-04-03 15:13:31

+0

哦,非常感谢,我正在测试,但我很高兴知道你们。 – 2012-04-03 15:19:32