在mysql

时间:2016-09-11 07:19:42

标签: mysql join view null

我有2个表,即table_1和table_2。 table_1具有以下详细信息

+------+--------+-------+--------+
| id   | col_1  | col_2 | col_3  |
+------+--------+-------+--------+
|  100 | red    |       | yellow |
|  101 |        | black | white  |
|  102 | orange | black | white  |
+------+--------+-------+--------+

table_2具有以下详细信息

+-------+-------+--------+
| col_1 | col_2 | col_3  |
+-------+-------+--------+
| red   | NULL  | yellow |
| NULL  | black | white  |
+-------+-------+--------+

现在,我如何找出table_1中具有table_2中条目的id。在上面的例子中,我需要得到100和101的答案。

我用这两个表尝试了几个连接查询,但问题是在查询中将NULL和空字符串等同起来。有没有办法让他们等同?或者我可以使用视图将table_1空字符串转换为NULL并比较视图和table_2?

1 个答案:

答案 0 :(得分:1)

您可以使用COALESCE

SELECT t1.*
FROM table_1 t1
JOIN table_2 t2 
   ON COALESCE(t1.col1, '') = COALESCE(t2.col1, '') AND
      COALESCE(t1.col2, '') = COALESCE(t2.col2, '') AND
      COALESCE(t1.col3, '') = COALESCE(t2.col3, '')