选择表中不存在的值

时间:2017-11-03 13:45:42

标签: mysql

我有一张表(PATHS),其中包含wbout 80.000条记录。 记录包含ID和PATHID。 例如:

ID:PATH_ID

<小时/> 1:102001C31 2:102001C32 3:102001C33 4:102001C34

现在我想用一个语句检查我的select中哪些值不在表PATHS中。

例如,如果我执行此查询:
select * from PATHS where PATH_ID not in (PATH_ID not in ("102001C31","102001C32","102001C3A")

我得到了值“102001C3A。

这可能吗?

1 个答案:

答案 0 :(得分:1)

如果您将正在测试的值放入表格那么,您可以找到不匹配的行。下面我将您正在测试的3个值放入&#34;派生表&#34;从那里我能够返回匹配的行。

SQL Fiddle

MySQL 5.6架构设置

CREATE TABLE PATHS
    (
      `ID` mediumint(8) unsigned NOT NULL auto_increment primary key,
      `PATH_ID` varchar(9))
;

INSERT INTO PATHS
    (`PATH_ID`)
VALUES
    ('102001C31'),
    ('102001C32'),
    ('102001C33'),
    ('102001C34')
;

查询1

select t.path_id
from (
    ## this is an example only ##

    select "102001C31" as path_id union all
    select "102001C32" as path_id union all
    select "102001C3A" as path_id
  ) t
left join paths p on t.path_id = p.path_id
where p.path_id is null

<强> Results

|   path_id |
|-----------|
| 102001C3A |