Sql 要显示表中不匹配的记录吗
我有如下记录Sql 要显示表中不匹配的记录吗,sql,oracle,oracle11g,oracle10g,Sql,Oracle,Oracle11g,Oracle10g,我有如下记录 Table1 id | 123 456 345 789 Table2 name| 123.abc 345.jkl 现在我只想显示id,即456789 请需要帮助也许是这样的。匹配在WHERE子句中NOT EXISTS条件的子查询中完成。当name是id,后跟一个句点,后跟至少一个以上的字符时,编写它的前提是name与id匹配。如果句点不是强制性的,或者是强制性的,但可能是名称的最后一个字符,则可以轻松修改查询以满足该要求 with table1 ( id ) as (
Table1
id | 123 456 345 789
Table2
name| 123.abc 345.jkl
现在我只想显示id,即456789
请需要帮助也许是这样的。匹配在WHERE子句中NOT EXISTS条件的子查询中完成。当name是id,后跟一个句点,后跟至少一个以上的字符时,编写它的前提是name与id匹配。如果句点不是强制性的,或者是强制性的,但可能是名称的最后一个字符,则可以轻松修改查询以满足该要求
with
table1 ( id ) as (
select '123' from dual union all
select '456' from dual union all
select '345' from dual union all
select '789' from dual
),
table2 ( name ) as (
select '123.abc' from dual union all
select '345.jkl' from dual
)
-- End of simulated inputs (for testing only, not part of the solution).
-- SQL query begins BELOW THIS LINE. Use your actual table and column names.
select id
from table1 t1
where not exists (
select name
from table2
where name like t1.id || '._%'
)
;
ID
---
456
789
你可以用减号。如果id为VARCHAR2字段,则不需要在id上添加字符。SUBSTR、INSTR用于在第一个字符之前提取字符
SELECT TO_CHAR(id) ID
FROM table1
MINUS
SELECT SUBSTR(NAME, 1, INSTR(NAME, '.') - 1)
FROM table2 ;
你试过什么?这不是一个免费的编码服务。那么,您希望表1中的id在表2中没有匹配的名称吗?什么是匹配-一个包含点左侧id和点右侧任何内容的名称?需要点吗?因此,如果名称是123而不是123.abc,这仍然是匹配的吗?