MySQL和Oracle都支持join...on...like
的操作:
SELECT * FROM table1 LEFT JOIN table2 ON table1.xxx LIKE CONCAT('%',table2.yyy,'%')
在hive中要想使用非等值連接,可使用locate代替
--LOCATE(a,b)功能就是尋找a在b中的位置,如果找到的話,返回位置;沒找到的話,返回0。
drop table if exists directory_index_project_belong; create table directory_index_project_belong as select a.id, a.mac , a.file_md5, a.directory_name, a.directory_size, a.directory_time, a.directory_type, a.directory_user, a.directory_home, a.directory_ftp , a.create_date , a.update_date , b.project_name as project_belong, a.status from directory_index_distinct as a left join directory_index_project b ON(TRUE) WHERE LOCATE(b.project_name,a.directory_home)>0 and LOCATE(b.project_name,a.directory_name)=0;
上面的語句為b.project_name在a.directory_home中出現過且不在a.directory_name中出現過
親測left join 和directory_index_distinct表中數據不一致,只保留兩表都有的數據,同join