2017-04-12 108 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不同的鏈接 –