MySQL通过一个值联接两个表,并获取其他结果(也没有该值)

时间:2018-12-03 12:22:45

标签: mysql join

我的mySQL查询有问题。

A 是这样的:

  • A.id
  • A.value1
  • A.user

表格 B 是:

  • B.id
  • B.user

我需要通过搜索 B.user 从查询中找到value_that_i_need。 但是我不需要A.user的值,我需要表A中的所有值,它们具有与B.user匹配的相同A.id(在表A中)。

因此,我需要所有唯一的ID(其中有 B.user = A.user ),并在表A中按A.id搜索它们。

我要避免2个不同的查询!已经尝试了其他方法JOIN,对我没有任何帮助。

编辑

好的,我想用最简单的方式解释这个问题。

I have this table: 
+---------+------------+
| id_user | another_id |
+---------+------------+

id_user -> unique id for each user
another_id -> an id related to something like a group

another_id对更多用户而言可以相同,但是我只需要接受属于同一组的用户。 因此,我将必须检查我的组(通过搜索我的id_user),然后我必须查看具有相同的another_id的所有用户。

问题是,如果我查询这样的内容:

SELECT * FROM table0 AS t0, something_like_groups AS slg    
JOIN user_inside_group as uig ON slg.id_group=uig.group_id AND slg.id_user='my_user_id'
WHERE slg.id='id_group' AND t0.user_id=uig.user_id

实际上,我必须加入3个表,但问题是我需要在我所在的位置找到“组”,并获取有关同一组内所有用户的所有信息。 (无需其他查询)

1 个答案:

答案 0 :(得分:0)

也许您只想基于b用户找到最小id,然后从a中获得所有匹配的行。例如

drop table if exists t,t1;
create table t( id int,user varchar(10));
create table t1( id int,user varchar(10));


insert into t values
(1,'aaa'),(1,'bbb'),(2,'ccc');
insert into t1 values
(1,'bbb'),(2,'ccc')
;

select t.id,t.user 
from t
join
(
select t1.user,min(t.id) minid
from t1
join t on t.user = t1.user
group by t1.user
) s
on t.id = s.minid;

+------+------+
| id   | user |
+------+------+
|    1 | aaa  |
|    1 | bbb  |
|    2 | ccc  |
+------+------+
3 rows in set (0.00 sec)