如何在特定列

时间:2018-01-19 05:30:56

标签: mysql sql

在table1上

+-------+-------+
| 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 个答案:

答案 0 :(得分:1)

您的预期输出意味着您希望保留table2中可以在unid1中找到table1值的所有行。如果是这样,那么我们可以在unid1列上内部连接这两个表。这假定unid1table1是唯一的。

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

答案 1 :(得分:0)

如果我理解正确,您希望输出值Table1中的行与Table2unid1中的unid2匹配的值{{1}必须包含您想要的值。

type

这里是DEMO