我有4列
FirstName | LastName | Address | Vote
有几行具有相同的名字,姓氏和地址,并且对第一个重复行的投票为1
例如:
FirstName | LastName | Address | Vote
John | Doe | 10 drive st | 1
John | Doe | 10 drive st | 0
Bob | Smith | 15 lexar dr | 0
Bob | Smith | 15 lexar dr | 0
如果第一个实例是1,我希望能够更新重复的投票值。从示例中,我希望John的重复投票也更新为1。
我迄今为止尝试的查询是:SELECT FirstName, LastName, Address, COUNT(*) FROM table GROUP BY FirstName, LastName, ADDRESS HAVING Count(*) > 1 WHERE Vote = 1
如何合并UPDATE查询,以便在第一个实例为Vote = 1时仅更新重复的投票列
由于
答案 0 :(得分:0)
没有“第一个例子”这样的东西。 SQL表表示无序集,因此如果没有指定排序的列,则“first”没有意义。
也就是说,您可以通过执行以下操作将给定名称/地址组合的非1值设置为1:
update table t
set vote = 1
where vote <> 1 and
exists (select 1
from table t2
where t2.firstname = t.firstname and
t2.lastname = t.lastname and
t2.address = t.address and
t2.vote = 1
);
这是ANSI标准语法,应该适用于大多数数据库。