更新 SQL 中的唯一行
我有一个表,
id | col1 | col3| col4
1 | x | r |
2 | y | m |
3 | z | p |
4 | x | r |
我必须更新该表的所有唯一行 即
id | col1 | col3| col4
1 | x | r | 1
2 | y | m | 1
3 | z | p | 1
4 | x | r | 0
我可以通过获取唯一的行
select distinct col1,col2 from table
。但是我如何识别这些行以便更新它们。请帮忙。
I have a table
id | col1 | col3| col4
1 | x | r |
2 | y | m |
3 | z | p |
4 | x | r |
i have to update all unique rows of this table
i.e
id | col1 | col3| col4
1 | x | r | 1
2 | y | m | 1
3 | z | p | 1
4 | x | r | 0
i can fetch unique rows by
select distinct col1,col2 from table
.But how can i identify these rows in order to update them.Please help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用分组依据来选择唯一的结果:
然后
限制是
id
列应该是唯一的。You can use the group by to pick unique result:
Then
Restriction is that the
id
column should be unique.如果表足够小,您可以执行以下操作
步骤 1:将所有内容更新为 1
步骤 2:将所有重复更新为 0 (OTTOMH)
If it is a small enough table, here is what you can do
Step 1: Update everything to 1
Step 2: Update all dups to 0 (OTTOMH)
您还可以尝试:
You can also try:
另一个稍微复杂的选项,一次设置
0
和1
值:这只是使用
row_number()
来决定哪一个唯一的组合是第一个,任意使用最低的id
,将其值指定为1,其他所有值都为零。One more slightly convoluted option, to set both
0
and1
values in one hit:This is just using
row_number()
to decide which of the unique combinations is first, arbitrarily using the lowestid
, assigning that the value of one, and everything else zero.