2017-04-12 72 views
0

有没有一种很好的方法来检查SQL列中的匹配,使用数据数组而不必循环显示?假设url数组有100多个链接,下面只是一个例子。如何将行数据与值数组匹配

url = ["www.site1.com", "www.site2.com"] 
url.each do |url| 
    match = db.execute("SELECT 1 FROM ListData WHERE Link=? ", url) 
    if match[0][0] == 1 
     flag = true 
    end 
end 
+0

我建议考虑使用ORM。它们减少了学习SQL的需求,并让您专注于代码。另外,当将代码移动到另一个DBM时,ORM可以将任务减少到更改一行代码,而不是在查询语言不兼容时不必重写所有查询。我建议查看[Sequel](http://sequel.jeremyevans.net)及其[Cheat Sheet](http://sequel.jeremyevans.net/rdoc/files/doc/cheat_sheet_rdoc.html)。 –

回答

0

使用WHERE IN子句是这样的:

SELECT 1 FROM ListData WHERE Link IN ('www.site1.com','www.site2.com') 
+0

假设我有100多个链接,我可以直接放置数组吗? db.execute(“SELECT 1 FROM ListData WHERE Link IN url”)我只需要知道哪些URL已经在数据库列 – ByteMe

+0

中,如果你有很多链接,你应该将它们插入到数据库中,然后它们与它们一起过滤。我假设你每次都没有100k不同的链接 –