我有两个表,一个包含大量链接(tvlinks),另一个包含要与链接名称(tvshows)匹配的子串列表:
tvlinks:
id (int 11) - primary index key
name (text) - name of the tv show link
link (text) - link to a website with information about the tv show
tvshows:
id (int 11) - primary index key
name (text) - name of the tv show
match (text) - substring to be matched against name in tvlinks table
tvlinks中可以有多行具有完全相同的名称和不同的链接。没有重复的行。
我使用以下查询从tvlinks获取所有行,其中tvshows.match是tvlinks.name的子字符串:
SELECT l.id,
l.name,
l.link
FROM tvlinks tvl
INNER JOIN tvshows tvs
ON ( INSTR(tvl.name, tvs.match )
ORDER BY tvl.name
;
它工作正常,我的问题是我想把另一个查询放在一起,只返回上面查询不匹配的行。
我一直在键盘上打开和关闭一两个星期,我确信它非常简单,我在很大程度上缺失了。 :)
感谢您的帮助
答案 0 :(得分:1)
select id from tvlinks where id not in (select l.id,
FROM tvlinks tvl
INNER JOIN tvshows tvs
ON ( INSTR(tvl.name, tvs.match )
ORDER BY tvl.name
;)
本身效率不高,一切都取决于你的表格。
答案 1 :(得分:0)
INSTR()
- 返回第一次出现的子串的索引 - 而不是你需要的条件