【问题标题】:Joining not included in table加入未包含在表中
【发布时间】:2021-03-25 15:12:18
【问题描述】:

我想请你帮忙。 我有两张桌子。在 tab1 之一中,我有 client_num,然后是个人数据。我想将 tab1 与 tab2 一起加入,client_nums 也在哪里,但一个客户编号可以在更多行上。此 tab2 中的第二列是写为数字 1-5 的产品。

标签1 客户编号;性别

1; M
2; F
3; F
4; M

tab2 客户编号;产品

1; 2
1; 3
1; 4
2; 1
2; 2
2; 3
3; 4
3; 1

现在我只想要没有产品编号 4 的客户

你能帮我解决这个问题吗?谢谢

【问题讨论】:

    标签: mysql sql select datatables nested


    【解决方案1】:

    使用not exists:

    select c.*
    from clients c
    where not exists (select 1
                      from client_products cp
                      where cp.client_num = c.client_num and
                            cp.product = 4
                     );
    

    【讨论】:

      【解决方案2】:

      使用以下查询:SELECT tab1.* FROM tab1 WHERE tab1.client_num NOT IN (SELECT DISTINCT tab2.client_num FROM tab2 WHERE tab2.product = 4);

      请注意,这也会输出在 tab2 中没有任何条目的客户记录。即它将在您提供的示例数据中输出 2 和 4。

      如果您打算只列出在 tab2 中关联产品的客户,您可以使用此查询:SELECT DISTINCT tab1.* FROM tab1 JOIN tab2 USING(client_num) WHERE tab1.client_num NOT IN (SELECT DISTINCT tab2.client_num FROM tab2 WHERE tab2.product = 4);

      根据示例数据,第二个查询将仅输出 2。

      【讨论】:

        猜你喜欢
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-31
        • 1970-01-01
        • 1970-01-01
        • 2020-06-29
        • 1970-01-01
        相关资源
        最近更新 更多