Mysql 有效地匹配来自两个不同表的值
我有两张桌子Mysql 有效地匹配来自两个不同表的值,mysql,ruby,database,ruby-on-rails-3,Mysql,Ruby,Database,Ruby On Rails 3,我有两张桌子 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]
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 CreateMasterUrls:idx\u url
添加索引:master\u url,[:host],:name=>:idx\u host
终止
终止
及
class CreateUrlList
我想检查URL_列表表中的URL是否存在于主URL中,若不存在,则将其添加到主URL表中。你知道怎么做吗
一种方法是进行正则表达式匹配。但它效率不高,也不能解决问题。我会先尝试以下(SQL)方法
insert into master_urls (url)
select ul.url
from url_list ul
where ul.url not in (select url from master_urls);
这不是最有效的方法,但很容易理解
但这不是你真正的问题
如果要求url_列表中的所有url必须始终位于master_url中,那么您需要使用dbms来确保这一点。根据您的应用程序,您可能需要外键约束、触发器或应用程序代码中的重大更改。您使用的是哪个数据库?mysql社区版。
insert into master_urls (url)
select ul.url
from url_list ul
where ul.url not in (select url from master_urls);