匹配值有效
问题描述:
我有两个表匹配值有效
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表。任何线索如何做到这一点?
一种方法是做正则表达式匹配。但它效率不高,也不能解决问题。
答
我想先沿着这些(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来确保发生这种情况。根据您的应用程序,您可能需要外键约束,触发器或应用程序代码中的重大更改。
你正在使用哪个数据库? – Sandy
mysql社区版。 –
我认为加入可能会有所帮助 – Sandy