首页 > 解决方案 > 如何在 Mysql Query 中排除特定行

问题描述

我在下面提到了两个表:

表格1

ID        Part1        key       Unique_1
ARF-11    Aekjh        aer-ert   IYT-15
ARF-12    Aferf        aee-sta   IYT-15
ARF-13    Berfe        aer-ert   IYT-15
ARF-14    Aeret        aty-ert   IYT-16
ARF-15    xrete        ant-ert   IYT-16
ARF-16    srete        ant-ert   IYT-17

表2

Key      Value
aer-ert  Some
aee-sta  ALL
aty-ert  Few
ant-ert  Less

我只想获取那些对于每个Unique_1值都不应该有 value=ALL 或 ( key!=aee-sta) 的行。

删除这样的行,其中任何Unique_1值都有 Value=ALL。

所需输出:

ID        Part1        key       Unique_1  Value
ARF-14    Aeret        aty-ert   IYT-16    Few
ARF-15    xrete        ant-ert   IYT-16    Less
ARF-16    srete        ant-ert   IYT-17    Less

标签: mysql

解决方案


您可以尝试以下方法

SELECT t1.ID, t1.part1, t1.key, t1.unique_1, t2.value FROM table1 t1 
    INNER JOIN (
        SELECT DISTINCT t1.unique_1 FROM table1 t1 INNER JOIN table2 t2 
        ON t1.key = t2.key AND (t2.`value` IN('All') OR t2.`key` IN('aee-sta'))
    ) AS tt
    ON tt.unique_1 != t1.Unique_1  
    INNER JOIN table2 t2 ON t2.key = t1.key

试试这个演示


推荐阅读