0

私はこの構造tbl_site_urlsを持っています:サイトのURLを保存する

tbl_camp_urls: これらの URL を処理した後、キャンペーンの URL を保存します tbl_site_urls

id - site_id - url
1  - 181     - url1
2  - 182     - url2
3  - 189     - url3

tbl_camp_urls

id - camp_id - site_id - url
1  - 5       - 181     - url1

URLをリストしたい場合は、処理する必要があります

select url from tbl_site_urls
  join site on tbl_site_urls.site_id = site.id AND site.valid=1

次に、ループ操作で、処理された URL を tbl_camp_urls に挿入します

まだ処理していない URL を一覧表示したい。比較操作のようなものです。

私が期待している結果は

2  - 182     - url2
3  - 189     - url3
4

3 に答える 3

4
SELECT a.urls
FROM tbl_site_urls as a
LEFT JOIN tbl_camp_urls as b
ON a.site_id = b.site_id
WHERE b.site_id IS NULL;
于 2012-12-07T13:08:20.720 に答える
1

これはそれを行う必要があります:

select  * from tbl_site_urls where url not in (select url from tbl_camp_urls)

(詳細については、サブクエリを検索してください)

于 2012-12-07T12:57:24.273 に答える
0

私の論理では、共通値を知るには交差を作成し、それらを削除するには結合を作成する必要があることを教えてくれます。

次のようになります。

最初にすべての値を取得します。

(select site_id from tbl_site_urls) 
union 
(select id from site)

これは、コモンズの値のみを取得する方法です

(select url from tbl_site_urls inner join site on tbl_site_urls.site_id = site.id)

これらのクエリをまとめてみましょう。

select * from (select site_id from tbl_site_urls 
union 
select id from site) as tem_table
where
site_id not in
(select url from tbl_site_urls inner join site on tbl_site_urls.site_id = site.id) --commons values
于 2012-12-07T13:50:26.140 に答える