2011-11-30 43 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来确保发生这种情况。根据您的应用程序,您可能需要外键约束,触发器或应用程序代码中的重大更改。