-1

让我尝试重新解释我正在尝试做的事情。首先,我有一个庞大的数据库或项目,50k 甚至更多,每天都在增长。我需要根据它没有的信息从这个数据库中提取信息。(我使用的是 SQL;pSQL 或 MySql 无关紧要。)

所以数据库看起来像这样(大致)

SELECT * FROM my_table
+---------+--------+
| 项目 | 类型 |
+---------+--------+
| 12EU | 磷 |
| 12EU | 右 |
| 12EU | T |
| 34RE | 磷 |
| 34RE | 右 |
| 34RE | T |
| 54TR | 右 |
| 54TR | T |
+---------+--------+

并非所有项目都有“P”,但它们都有“T”和“R”。我需要拉出没有TYPE“P”的ITEM,其他字母的ITEM对我来说无关紧要。

在这个例子中,我想要项目“54TR”,因为它没有类型“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

这不起作用,它仍然返回其他类型,而不是正确的轨道......

4

4 回答 4

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> 从 myt 中选择 *;

项目 ATYPE PIECE
---------- ---------- ----------
12EU 扩展
12EU R 分机
34RE 文本
54RT P分机
34EU R 分机
54TR P分机

选择了 6 行。

SQL> select distinct item from myt where atype!='P' 2 - 3 select distinct item from myt where atype='P';

物品
----------
34EU
34RE
于 2013-09-18T08:01:22.183 回答
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')
于 2013-09-18T07:58:29.220 回答
0

尝试以下 SQL 查询

select * from yourtablename where Type  not like '%P%'
于 2013-09-18T07:58:48.863 回答
0
Select * from tablename where type != 'p'
于 2013-09-18T09:03:05.460 回答