我有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)
)
答案 0 :(得分:1)
此查询对我有用:感谢@a_horse_with_no_name的评论
db.execute("DELETE FROM listings WHERE id IN (SELECT id FROM multipleDupeCopies)")