2011-11-30 68 views
0

我有兩個表匹配值有效

class CreateMasterUrls < ActiveRecord::Migration 
    def change 
    \create_table :master_urls do |t| 
    t.string :url 
    t.string :host 

    t.timestamps 
end 
add_index :master_urls, [:url], :name => :idx_url 
add_index :master_urls, [:host], :name => :idx_host 
end 
end 

class CreateUrlLists < ActiveRecord::Migration 
    def change 
    create_table :url_lists do |t| 
    t.string :url 
    t.integer :project_id 

    t.timestamps 
end 
end 
end 

我要檢查URL出現在url_lists表是否存在於master_urls,如果不是將它添加master_urls表。任何線索如何做到這一點?

一種方法是做正則表達式匹配。但它效率不高,也不能解決問題。

+0

你正在使用哪個數據庫? – Sandy

+0

mysql社區版。 –

+0

我認爲加入可能會有所幫助 – Sandy

回答

0

我想先沿着這些(SQL)行嘗試一些東西。 。 。

insert into master_urls (url) 
select ul.url 
from url_list ul 
where ul.url not in (select url from master_urls); 

這不是最有效的方法,但它很容易理解。

但這不是你的問題。

如果需要url_list中的所有url必須始終位於master_urls中,那麼您需要使用dbms來確保發生這種情況。根據您的應用程序,您可能需要外鍵約束,觸發器或應用程序代碼中的重大更改。