2

我有两个表,一个包含大量链接(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

tvlink 中可以有多行名称完全相同但链接不同。没有重复的行。

我使用以下查询从 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
;

它工作正常,我的问题是我想组合另一个查询,它只返回与上面的查询不匹配的行。

一两个星期以来,我一直在不停地敲击键盘,我敢肯定这是一件非常简单的事情,我在很大程度上错过了它。:)

谢谢你的帮助

4

2 回答 2

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 ;)

本身效率不高,完全取决于您的桌子。

于 2012-10-28T20:31:37.397 回答
0

INSTR()- 返回子字符串第一次出现的索引 - 不是你需要的条件

于 2012-10-28T20:31:10.493 回答