对于此查询:
转子查询到连接查询
SELECT `user_id`, `user_name` FROM users WHERE `user_id` IN (SELECT user_one, user_two FROM friends WHERE user_one='$my_id' OR user_two = '$my_id')
我收到此错误信息:
基数违规:1241操作数应包含1列(S)
是否有可能在连接中使用2列而不是子查询?如果是,如何?
对于此查询:
转子查询到连接查询
SELECT `user_id`, `user_name` FROM users WHERE `user_id` IN (SELECT user_one, user_two FROM friends WHERE user_one='$my_id' OR user_two = '$my_id')
我收到此错误信息:
基数违规:1241操作数应包含1列(S)
是否有可能在连接中使用2列而不是子查询?如果是,如何?
为什么不使用这样的工会:如果你想重新
SELECT `user_id`, `user_name`
FROM users
WHERE `user_id` IN (SELECT user_one FROM friends
where user_one = '$my_id'
UNION
SELECT user_two FROM friends
where user_two = '$my_id')
选择a.userid,从用户a.username 一个 内加入的朋友b 上a.userid = b.userid 其中b.user_one = '$添加my_id' 或b.user_two = '$添加my_id'
试试这个:因为IN子句不能在WHERE语句选择上多列
SELECT user_id, user_name FROM users U
join friends F
ON F.user_id=U.user_id
and F.user_name=U.user_name
WHERE F.user_one='$my_id' OR F.user_two = '$my_id'
查询返回的错误。
我想你正在寻找可能是这样的
SELECT
user_id,
user_name
FROM users INNER JOIN Friends ON Users.User_ID = User_one OR Users.User_ID = User_Two
SELECT USER_ID,USER_NAME 来自用户的一个朋友b WHERE a.user_id = b.user_one AND(b.user_one = '$添加my_id' OR b.user_two = '$添加my_id')
从users
表,其中你的user_id是在user_one或friends
表user_two线,你可以做到以下几点:
SELECT `user_id`, `user_name`
FROM users
WHERE `user_id` IN (
SELECT user_one
FROM friends
WHERE user_one = '$my_id'
)
UNION ALL
SELECT `user_id`, `user_name`
FROM users
WHERE `user_id` IN (
SELECT user_two
FROM friends
WHERE user_two = '$my_id'
);
IN操作数只需要一个参数。如果你想得到你所有的朋友,你需要这样做,只返回一列。你可以做这样的事情与UNION:
SELECT user_one
FROM friends
WHERE user_two = 'me'
UNION
SELECT user_two
FROM friends
WHERE user_one = 'me';
然后,用它作为你的参数:
SELECT user_id, user_name
FROM users
WHERE user_id IN(
SELECT user_one
FROM friends
WHERE user_two = 'me'
UNION
SELECT user_two
FROM friends
WHERE user_one = 'me');
当然可以,但在查询你正在做你不需要第二个选择列在where子句中使用它们。除非你需要user_two,在这种情况下,你可以在子查询中使用UNION。一个选择user_one,联合到第二个选择user_two。 – gmiley 2015-02-24 18:08:15
但我想只显示两列中的一列,具体取决于哪一列不是我。有可能是user_one或user_two是我自己,这取决于谁问谁是朋友。 – Schwesi 2015-02-24 18:09:43