Mysql 基于特定表中的一列从两个表中获取数据

Mysql 基于特定表中的一列从两个表中获取数据,mysql,Mysql,我有两张桌子: 表t1: +-----+----+ | i1 | c1 | +-----+----+ | 11 | abc | | 22 | bbc | | 33 | cbc | +-----+-----+ 表t2: +-----+----+ | i2 | c2 | +-----+----+ | 22 | cc | | 33 | bb | | 33 | bb | | 44 | aa | | 22 | cc | +---

我有两张桌子:

表t1:

+-----+----+  
| i1  | c1 |  
+-----+----+  
| 11  | abc |  
| 22  | bbc |  
| 33  | cbc |  
+-----+-----+  
表t2:

+-----+----+  
| i2  | c2 |  
+-----+----+  
| 22  | cc |  
| 33  | bb |  
| 33  | bb |  
| 44  | aa |
| 22  | cc |  
+-----+----+  
输出应为

+----+-----+----+  
| i1 | c1  | c2 |
+----+-----+----+   
| 22 | bbc | cc |
| 33 | cbc | bb |
+----+-----+----+
我尝试了连接,但无法获得确切的输出

获取table1.user\u id,table1affiliate\u id,其中table1.affiliate\u id=table2.id
应该只从表1中给出reslut,例如:表1有26行,表2有125行,其中表2有表1的所有26行和更多行,因此我需要输出只打印两个表中的26个相关字段…

此SQL将帮助您:

SELECT t1.i1, t1.c1, t2.c2
FROM t1, t2
WHERE t1.i1 = t2.i2
GROUP BY t1.i1, t1.c1

应避免隐式联接

   drop table if exists t1;
    create table t1(i1 int, c1 varchar(3));
    insert into t1 values  
    ( 11  ,'abc'),  
    ( 22  ,'bbc'),  
    ( 33  ,'cbc');  


drop table if exists t2;
create table t2 ( i2 int, c2 varchar(2));  
insert into t2 values
( 22  , 'cc'),  
( 33  , 'bb'),  
( 33  , 'bb'),  
( 44  , 'aa'),
( 22  , 'cc');  


select distinct t1.i1,t1.c1,t2.c2
from t1
join t2 on t2.i2 = t1.i1

+------+------+------+
| i1   | c1   | c2   |
+------+------+------+
|   22 | bbc  | cc   |
|   33 | cbc  | bb   |
+------+------+------+
2 rows in set (0.00 sec)

我尝试了连接,但无法获得准确的输出-尽管如此,您应该发布您尝试的内容;这将有助于其他人了解您是否在某个地方犯了错误。从表1中选择表1.i1、表1.c2、表2.c2,然后在表2表1上的表1内部连接表1。c1=表2.I2您需要编辑您的问题,而不是在注释中放置代码。请您也在下面给出了答案;对我来说似乎是猜测,但你可以试试。编辑:是的,我是对的。若33在表2中有bb和jj,你们会想要什么?为什么你们不想得到i1=11的行?有什么秘密条件吗?我有两个表,表1有id和用户名,表2有id和电子邮件,其中用户可能有很多电子邮件,但我只需要获取重要的电子邮件id,所以这是头痛…请检查图像并帮我整理谢谢