SQL,Hive选择具有相同值的列并创建新表

时间:2018-02-15 01:01:43

标签: sql hive

我有一个有两列的表 - 搜索&加盟,但两者之间重复的一些价值观。 例如:搜索123,345,567,768,008     会员425,345,986,008

我希望将(008,345)中的所有内容加上Affiliate中的所有其他内容,并创建一个名为unique affiliate的独立表。搜索中的其余部分也是我想要转换为另一个名为唯一搜索的单独表格。

我可以分别创建两个表,加入常用值并创建一个表但是如何将其余的包含在连接中?或者也许从两者中选择常用值并创建一个新表,然后再次,每个字段中的其余值如何呢?

1 个答案:

答案 0 :(得分:1)

所有关联公司都可以通过与Affiliate列不同的简单选择找到。

通过选择Affiliate列中出现的搜索项列表中不存在的所有搜索项,可以找到搜索。 要获取会员列中出现的搜索项,请使用内部联接子查询来选择它们。 然后在“搜索”列上执行SELECT,其中项目不在子查询生成的列表中

--INSERT INTO your new affiliates_table
SELECT DISTINCT Affiliate 
FROM tbl_SearchAffiliate
WHERE ISNULL(Affiliate,'') <> ''

--INSERT INTO your new search_table
SELECT DISTINCT Search 
FROM tbl_SearchAffiliate
WHERE Search NOT IN 
    ( --select the search values that occur in the affilliates column
        SELECT x.Search
        FROM tbl_SearchAffiliate x
                INNER JOIN tbl_SearchAffiliate y ON x.Search = y.Affiliate
    )
    AND ISNULL(Search,'') <> ''

/********************
below is the data I assumed from your question
CREATE TABLE [dbo].[tbl_SearchAffiliate](
    [Search] [nvarchar](50) NULL,
    [Affiliate] [nvarchar](50) NULL
) ON [PRIMARY]

GO
INSERT [dbo].[tbl_SearchAffiliate] ([Search], [Affiliate]) VALUES (N'123', N'425')
GO
INSERT [dbo].[tbl_SearchAffiliate] ([Search], [Affiliate]) VALUES (N'345', N'345')
GO
INSERT [dbo].[tbl_SearchAffiliate] ([Search], [Affiliate]) VALUES (N'567', N'986')
GO
INSERT [dbo].[tbl_SearchAffiliate] ([Search], [Affiliate]) VALUES (N'768', N'008')
GO
INSERT [dbo].[tbl_SearchAffiliate] ([Search], [Affiliate]) VALUES (N'008', NULL)
GO
*******************/