让我试着重新解释我想要做的事情。首先,我有一个数据库或大型,50k及以上的物品,每天都在增长。我需要根据它没有的内容从这个数据库中提取信息。 (我正在使用SQL; pSQL或MySql并不重要。)
所以数据库看起来像这样(粗略地)
SELECT * FROM my_table
+---------+--------+ | ITEM | TYPE | +---------+--------+ | 12EU | P | | 12EU | R | | 12EU | T | | 34RE | P | | 34RE | R | | 34RE | T | | 54TR | R | | 54TR | T | +---------+--------+
并非所有项目都有“P”,但它们都有“T”和“R”。我需要拉出没有TYPE“P”的ITEM,其他字母的ITEM对我来说无关紧要。
在这个例子中我想要ITEM“54TR”,因为它没有TYPE“P”。
我希望这有助于更好地解释我想要做的事情。
我所做的事情的例子:
SELECT distinct ITEM
FROM (SELECT distinct ITEM FROM my_table WHERE TYPE='P') q
WHERE TYPE!='P'
AND ITEM != q.ITEM
ORDER BY ITEM
这不起作用,它仍会返回其他类型,而不是正确的轨道......
答案 0 :(得分:2)
select distinct item from yourtablename where type!='P'
minus
select distinct item from yourtablename where type='P'
示例:
create table myt (item varchar2(10),atype varchar2(10),piece varchar2(10));
insert into myt values ('12EU','P','ext');
insert into myt values ('12EU','R','ext');
insert into myt values ('34RE','T','ext');
insert into myt values ('54RT','P','ext');
insert into myt values ('34EU','R','ext');
insert into myt values ('54TR','P','ext');
commit;
SQL> select * from myt;
ITEM ATYPE PIECE ---------- ---------- ---------- 12EU P ext 12EU R ext 34RE T ext 54RT P ext 34EU R ext 54TR P ext 6 rows selected.
SQL>从myt中选择不同的项目atype!='P' 2减 3从myt中选择不同的项目,其中atype ='P';
ITEM ---------- 34EU 34RE
答案 1 :(得分:0)
select * from my_table t
where type != 'P'
AND not exists
(select 1 from my_table t2 where t2.item = t.item and t2.type = 'P')
答案 2 :(得分:0)
尝试使用SQL查询
select * from yourtablename where Type not like '%P%'
答案 3 :(得分:0)
Select * from tablename where type != 'p'