微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

确定 2 个表month1、month2之间的变化我正在使用联合/相交/除外

如何解决确定 2 个表month1、month2之间的变化我正在使用联合/相交/除外

结果返回随机顺序。大多数记录的表month1,month2,但混合了返回month2,month1的记录。我需要一致的第 1 个月、第 2 个月。我看到很多类似的回复,但没有任何效果。我试过 cte,子查询,我已经将 1 添加到月 1 和 2 到月 2 但是 结果将其视为“更改”并返回所有记录。我的实际表有 5000 多条记录,因此不确定在这个小组中您会看到我遇到的相同问题。

预期结果将是 2 行,都是 Bob Marley 行,因为第 3 列从一个月更改为另一个。 union/intersect/except 确实实现了这一点,但结果并不一致地显示为表 a、表 b。每隔一段时间记录会在表 b,表 a 中。

SELECT
    *
FROM
    (
        SELECT
            column1,column2,column3,1 AS sortby
        FROM
            tbl_Month1
        UNION
        SELECT
            column1,0 AS sortby
        FROM
            tbl_Month2
        INTERSECT
        SELECT
            column1,1 AS sortby
        FROM
            tbl_Month1
        EXCEPT
        SELECT
            column1,0 AS sortby
        FROM
            tbl_Month2
    ) results
ORDER BY
    column1,column2

CREATE TABLE #month1 (
    id INT,name NVARCHAR(200),value_changed nvarchar(10)
    )

CREATE TABLE #month2 (
    id INT,value_changed nvarchar(10)
    )

INSERT INTO #month1 (id,name,value_changed)
VALUES (12345,'Bob Marley','11233456'),(12346,'Bob Seger','55223366'),'Bob Dylan','47895645'),'Bob Plant','74185296')

INSERT INTO #month2 (id,'32565221'),'74185296')

解决方法

正如您在向 tbl_month2 和 1 向 tbl_month1 添加 sortBy 列时提到的那样,这两个表中的行不会相交。

但是如果您删除 sortby 列,它也没有任何意义。 您在 tbl_Month2 和 tbl_Month1 上使用 intersect,这将返回所有常见行,然后您正在与 tbl_Month1 合并,最终将仅返回 tbl_month1 中的所有行。那么你已经将 tbl_month2 排除在外了。

所以条件变成了 tbl_Month1,除了 tbl_month2。这是你要找的吗? 然后你可以使用 not exists 而不是 except 如下:

.logo-image{
    width: 46px;
    height: 46px;
    border-radius: 50%;
    overflow: hidden;
    margin-top: -6px;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。