在同一列中选择特定值

时间:2013-06-28 18:47:21

标签: mysql

我有一张桌子" 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

5 个答案:

答案 0 :(得分: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);

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

答案 1 :(得分: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;

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

答案 2 :(得分:0)

SELECT
  yourtable.*
FROM
  yourtable
WHERE
  group_id IN (SELECT group_id FROM yourtable WHERE profile_id='AAAAA')
  AND profile_id != 'AAAAA'

答案 3 :(得分: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')

你可以在fiddle中尝试。

答案 4 :(得分: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