【问题标题】:SQL, Hive select columns with same values and create new tableSQL,Hive 选择具有相同值的列并创建新表
【发布时间】:2018-02-15 01:01:43
【问题描述】:

我有一个包含两列的表 - 搜索和关联,但其中一些值在两者之间重复。 例如:搜索 123、345、567、768、008 加盟425、345、986、008

我想获取 (008, 345) 中存在的那些 + Affiliate 中的所有其他的并创建一个单独的表,称为唯一的附属。 Search 中的其余部分也是我要转换为另一个名为唯一搜索的单独表。

我可以分别创建两个表,连接公共值并创建一个表,但我如何将其余部分也包含在连接中?或者也许从两者中选择共同的值并创建一个新表,但话说回来,每个字段中的其余值呢?

【问题讨论】:

    标签: sql hive


    【解决方案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
    *******************/
    

    【讨论】:

    • NOT IN 是我想要的,这更有意义。我选择了 distinct 并加入 common 以获取 common vales,但 NOT IN 子查询将提取其余部分。太好了,谢谢。
    猜你喜欢
    • 2022-09-30
    • 2015-11-15
    • 2014-07-14
    • 2016-11-11
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2021-09-21
    相关资源
    最近更新 更多