-1

我有一个这样的表“Message_group”,AAAA 是我的登录 profile_id。

message_group_id | profile_id | group_id

    1            AAAAA      1000
    2            EEEEE      1000
    3            AAAAA      2000
    4            FFFFF      2000
    5            AAAAA      3000
    6            HHHHH      3000
    7            WWWWW      4000
    8            RRRRR      4000

我想要一个给出结果的查询:

1 EEEEE 1000
2 FFFFF 2000
3 HHHHH 3000
4

5 回答 5

0

如果我理解正确,这应该可以解决问题:

SELECT login_id 
FROM message_group 
WHERE login_id <> 'AAAAA' AND group_id IN ( SELECT group_id 
                                            FROM message_group 
                                            WHERE login_id='AAAAA')

你可以试试这个小提琴

于 2013-06-28T19:10:53.167 回答
0

我相信这不是功课......所以,试试下面的说法:

SELECT x.message_group_id, y.profile_id, y.group_id
FROM Message_group x
  INNER JOIN Message_group y
  ON (x.message_group_id * 2 = y.message_group_id);

如果它有效,我会更好地解释你。^^

于 2013-06-28T18:56:47.963 回答
0

您可以将表与自身连接起来,以获取与group_id您正在搜索的行相同的行。

SELECT b.* FROM Message_group a
JOIN Message_group b ON a.group_id=b.group_id
WHERE a.profile_id = 'AAAAA'
AND b.profile_id != a.profile_id;

演示:http ://sqlfiddle.com/#!2/7a548/1

于 2013-06-28T18:58:24.373 回答
0
SELECT
  yourtable.*
FROM
  yourtable
WHERE
  group_id IN (SELECT group_id FROM yourtable WHERE profile_id='AAAAA')
  AND profile_id != 'AAAAA'
于 2013-06-28T19:01:41.293 回答
0

用这个:

SET @rowno = 0;
SELECT @rowno:=@rowno+1 `rn`, profile_id, group_id
FROM Message_group
WHERE profile_id = 'EEEEE' AND group_id = '1000'
|| profile_id = 'FFFFF' AND group_id = '2000'
|| profile_id = 'HHHHH' AND group_id = '3000';

和小提琴:http ://sqlfiddle.com/#!2/edf7d/10

于 2013-06-28T19:48:36.197 回答