列出 table 行不包含其他 table 中的特定值

List rows of table not containing specific value in other table

我有 2 个 table,我需要 SQL 查询 will select idb, name from basic table exclude where we don't have链接例如黄色。

basic_table:
idb... name ... value 
1      color    red   
2      style    modern    

second_table
id ... idb ... second 
1      1       green
2      1       yellow
3      2       red   
4      2       blue 

结果应该是:

idb... name
2      style 

这个查询将包括 idp 1,因为我们有它和绿色,但应该被排除。

SELECT
    `basic_table`.`idp`, `basic_table`.`name`
FROM
`basic_table`
    LEFT JOIN `second_table` 
        ON (`basic_table`.`idp` = `second_table`.`idp`)
WHERE (`second_table`.`second` NOT LIKE '%yellow%')

有什么想法吗?

您可以使用 not exists 轻松完成此操作:

select idb,
    name
from basic_table b
where not exists (
        select 1
        from second_table s
        where b.idb = s.idb
            and s.second = 'yellow'
        );

使用左连接:

select distinct b.idb,
    b.name
from basic_table b
left join second_table s on b.idb = s.idb
    and s.second = 'yellow'
where s.idb is null;