2

2つのテーブルがあります。1つは多くのリンク(tvlinks)を保持し、もう1つはリンクの名前(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に複数の行が存在する可能性があります。重複する行はありません。

次のクエリを使用して、tvshows.matchがtvlinks.nameのサブストリングであるtvlinksからすべての行を取得します。

SELECT l.id,
       l.name,
       l.link
    FROM tvlinks tvl
  INNER JOIN tvshows tvs
  ON ( INSTR(tvl.name, tvs.match )
  ORDER BY tvl.name
;

正常に動作します。私の問題は、上記のクエリと一致しない行のみを返す別のクエリをまとめたいということです。

私はキーボードの頭を1、2週間オンとオフで叩いてきましたが、それは本当に単純なことで、大きな意味で欠けていると確信しています。:)

ご協力いただきありがとうございます

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 に答える