Mysql 如何在特定列上使用选项值联接2个表

Mysql 如何在特定列上使用选项值联接2个表,mysql,sql,Mysql,Sql,关于表1 +-------+-------+ | unid1 | unid2 | +-------+-------+ | 1 | 1 | | 2 | 2 | | 3 | 3 | +-------+-------+ 表2 +---------+-------+-------+------+ | tableid | unid1 | unid2 | type | +---------+-------+-------+------+ | 1

关于表1

+-------+-------+
| unid1 | unid2 |
+-------+-------+
|     1 |     1 |
|     2 |     2 |
|     3 |     3 |
+-------+-------+
表2

+---------+-------+-------+------+
| tableid | unid1 | unid2 | type |
+---------+-------+-------+------+
|       1 |     1 |     1 |    1 |
|       2 |     2 |     2 |    1 |
|       3 |     3 |     3 |    1 |
|       4 |     3 |     0 |    2 |
|       5 |     3 |     0 |    2 |
|       6 |     4 |     4 |    3 |
|       7 |     5 |     5 |    3 |
+---------+-------+-------+------+
预期结果

+-------+-------+------+
| unid1 | unid2 | type |
+-------+-------+------+
|     1 |     1 |    1 |
|     2 |     2 |    1 |
|     3 |     3 |    1 |
|     3 |     0 |    2 |
|     3 |     0 |    2 |
+-------+-------+------+
我的SQL代码

select t1.*, t2.* from table1 t1
left join table2 t2 on t1.unid1 = t2.unid1 and t1.unid2 = t2.unid2 and 
t2.type in (1 , 2);

我的SQL查询没有给出我想要的结果,如何才能得到我想要的结果。

您的预期输出意味着您希望保留
表2中的所有行,其
unid1
值可以在
表1
中找到。如果是这样,那么我们可以在
unid1
列中对这两个表进行内部联接。这假设
unid1
表1
中是唯一的

SELECT t2.unid1, t2.unid2, t2.type
FROM table2 t2
INNER JOIN table1 t1
    ON t2.unid1 = t1.unid1;

如果我理解正确,您希望输出值,其中
Table1
中的行与
Table2
中的
unid1
unid2
两列中的行匹配,并且
类型必须包含所需的值

SELECT  b.unid1, b.unid2, b.type
FROM    table1 a
        INNER JOIN table2 b
            ON a.unid1 = b.unid1
WHERE   EXISTS 
        (
            SELECT  1
            FROM    Table1 t1
                    INNER JOIN Table2 t2
                        ON t1.unid1 = t2.unid1 
                            AND t1.unid2 = t2.unid2
            WHERE   t2.type in (1,2)
                    AND a.unid1 = t1.unid1
        )

这里有一个。

您需要一个简单的联接,查看输入和输出时,两个表中的联接列似乎都是uniq1。要获得所需的输出,应用什么逻辑?数据集不是很有代表性,是吗。最好能考虑一下这些事情