我有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?
答案 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, '')