我有两个不同的表(从多个来源提取以获得这些意见),具有完全相同的列名称,我试图从表A中找到值,这是从表B的差异。从2个相同的表列之间的sql差异
为表A样本数据:
id | code | dos | entry_id | survey_date
------------+----------+------------+----------------+-------------
1 | 0120 | 2017-07-02 | 141949406 | 2017-07-04
2 | 0150 | 2017-07-02 | 141949394 | 2017-07-04
3 | 4910 | 2017-07-02 | 141949304 | 2017-07-04
4 | 0150 | 2017-07-02 | 141945276 | 2017-07-31
5 | | | | 2017-07-31
6 | 0150 | 2017-07-02 | 141937311 | 2017-07-04
7 | | | | 2017-07-27
8 | 0120 | 2017-09-01 | 142080557 | 2017-08-01
9 | | | | 2017-07-31
10 | | | | 2017-07-31
15 | 0150 | 2017-07-02 | 141933588 | 2017-07-31
为表B示例数据:
Table B:
id | code | dos | entry_id | survey_date
------------+----------+------------+----------------+-------------
11 | 0150 | 2017-09-05 | 142081004 |
12 | 0150 | 2017-09-05 | 142082062 |
1 | | | | 2017-07-04
16 | 0120 | 2017-07-02 | 141949391 |
2 | | | | 2017-07-04
3 | 4910 | 2017-07-02 | 141949304 | 2017-07-04
3 | 4910 | 2017-07-02 | 141949304 | 2017-07-04
13 | 0150 | 2017-07-02 | 141947246 |
4 | 0150 | 2017-07-02 | 141945276 | 2017-07-31
14 | 0150 | 2017-07-02 | 141943912 |
5 | | | | 2017-07-31
6 | | | | 2017-07-04
15 | 0150 | 2017-07-02 | 141933588 |
7 | | | | 2017-07-27
8 | | | | 2017-08-01
9 | | | | 2017-07-31
10 | | | | 2017-07-31
我已经使用
select * from table_A except select * from table_b;
结果样品:
id | code | dos | entry_id | survey_date
------------+----------+------------+----------------+-------------
1 | 0120 | 2017-07-02 | 141949406 | 2017-07-04
2 | 0150 | 2017-07-02 | 141949394 | 2017-07-04
8 | 0120 | 2017-09-01 | 142080557 | 2017-08-01
6 | 0150 | 2017-07-02 | 141937311 | 2017-07-04
15 | 0150 | 2017-07-02 | 141933588 | 2017-07-31
它给了我不同行,但我需要的是不同的 预期结果列值:
id | code | dos | entry_id | survey_date
------------+----------+------------+----------------+-------------
1 | 0120 | 2017-07-02 | 141949406 |
2 | 0150 | 2017-07-02 | 141949394 |
8 | 0120 | 2017-09-01 | 142080557 |
6 | 0150 | 2017-07-02 | 141937311 |
15 | | | | 2017-07-31
预期的结果集ID = 1有survey_date值,因为该值是表B的一部分,我需要它为null。同样,对于行id = 15,除了survey_date以外,每个列都匹配,因此结果应该除了survey_date之外的所有列值都为null,我该如何实现?对不起,如果它已发布较早
改变为具有期望输出 – bocadev
它必须是 “SELECT *” 或可能是“选择ID,密码,DOS,entry_id,survey_date描述,等等 –
它可以选择ID,代码,DOS等 – bocadev