列出 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;
我有 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;