我有两个表,包含重复值和唯一值。我不需要来自两个表的重复值,我只需要唯一的值

时间:2018-05-03 07:51:06

标签: php mysql

我有两个包含重复值和唯一值的表我不需要两个表中的重复值我只需要唯一值并将其作为输出复制到新表中。

例如:

Table 1 data
col1
101
102
103
104
Table 2 data
col1
101
102
103
105

所需的输出是

New Table 3 data
col1
104
105

查询

SELECT 
    Table 1 data.col1 
FROM 
    Table 1 data 
LEFT JOIN 
    Table 2 data 
ON 
    Table 1 data.col1 = Table 2 data.col1 
WHERE 
    Table 2 data.col1 is NULL

5 个答案:

答案 0 :(得分:1)

希望这会有所帮助:

(SELECT t1.col1 FROM t1 left join t2 on t1.col1 =t2.col1 WHERE t2.col1 is null) union (SELECT t2.col1 FROM t2 left join t1 on t1.col1=t2.col1 WHERE t1.col1 is null)

答案 1 :(得分:1)

使用带有UNION的下方查询:

(SELECT Table1.column1 FROM Table1 left join Table2 on Table1.column1 =Table2.column1 WHERE Table2.column1 is null) 
union
(SELECT Table2.column1 FROM Table2 left join Table1 on Table1.column1=Table2.column1 WHERE Table1.column1 is null)

答案 2 :(得分:0)

从两个表中获取不同的值(使用UNION)来生成 101 102 103 104 105

然后

从两个表中获取交叉数据(使用INNER JOIN)来生成 101 102 103

之后,从结果1中减去结果2(在Oracle中你可以使用MINUS运算符,但你可以使用相同的想法在mysql中使用NOT IN运算符构建复杂查询)

答案 3 :(得分:0)

希望这会奏效。我在Oracle数据库中尝试过。希望它也适用于MYSQL。

    SELECT col1
        FROM tab1 outers
           WHERE NOT EXISTS
              (SELECT col1 FROM tab2 inners WHERE outers.COL1 = inners.COL1)        
    UNION
    SELECT col1
       FROM tab2 outers
           WHERE NOT EXISTS
               (SELECT col1 FROM tab1 inners WHERE outers.COL1 = inners.COL1);

答案 4 :(得分:0)

INSERT INTO表3数据(clo1)SELECT CombinedValue FROM(SELECT DISTINCT col1 AS CombinedValue FROM Table 1 data UNION ALL SELECT DISTINCT col1 FROM Table 2 data)temp GROUP BY CombinedValue HAVING COUNT(*)= 1

此查询对我有用:)

谢谢大家的帮助