Mysql 基于特定表中的一列从两个表中获取数据
我有两张桌子: 表t1: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 | +---
+-----+----+
| 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,所以这是头痛…请检查图像并帮我整理谢谢