我有一张桌子" 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
答案 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;
答案 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';