为什么此DELETE查询不会删除表中的条目,也不会抛出异常

时间:2012-03-30 17:56:00

标签: ruby sqlite sql-delete

我有2个表:'listing'和'multipleDupeCopies'

'multipleDupeCopies'中的所有条目也存在于'listing'中,需要从中删除。

因此,我编写了一个包含在Ruby脚本中的简单SQLite3查询来执行此任务。

它很简单,我不明白为什么它不起作用。我花了几个小时试图理解它,但没有任何改变,尝试不同的方式来编写查询仍然是相同的结果:列表中的条目不会被删除!我可以看到运行脚本后生成的文本文件的输出,但表仍然保持所有条目完整。没有删除!!

这是脚本:

require 'sqlite3'  
db = SQLite3::Database.new('development.sqlite3')  
db.results_as_hash = true;  
rows= db.execute("SELECT * FROM multipleDupeCopies ")  
rows.each do |row|  
puts 'Deleting...'  
rowid = row['id']  
puts rowid  
db.execute("DELETE FROM listings WHERE listings.id = 'rowid' ")  

end

有什么建议吗?


编辑: 列表架构

CREATE TABLE "listings" 
(
  "id"            INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
  "name"          VARCHAR(255),
  "telephone"     VARCHAR(255),
  "fax"           VARCHAR(255),
  "suite"         VARCHAR(255),
  "address"       VARCHAR(255),
  "city"          VARCHAR(255),
  "province"      VARCHAR(255),
  "postal_code"   VARCHAR(255),
  "latitude"      VARCHAR(255),
  "longitude"     VARCHAR(255),
  ...............  many more columns NOT relevant
  "created_at"    datetime NOT NULL,
  "updated_at"    datetime NOT NULL
)

multipleDupeCopies的架构

CREATE TABLE "multipleDupeCopies" 
(
  "id"            INTEGER PRIMARY KEY NOT NULL,
  "name"          VARCHAR(255),
  "telephone"     VARCHAR(255),
  "fax"           VARCHAR(255),
  "suite"         VARCHAR(255),
  "address"       VARCHAR(255),
  "city"          VARCHAR(255),
  "province"      VARCHAR(255),
  "postal_code"   VARCHAR(255),
  "latitude"      VARCHAR(255),
  "longitude"     VARCHAR(255),
  "url"           VARCHAR(255)
)

1 个答案:

答案 0 :(得分:1)

此查询对我有用:感谢@a_horse_with_no_name的评论

db.execute("DELETE FROM listings WHERE id IN (SELECT id FROM multipleDupeCopies)")