求大神一句mysql搞定

weixin_40243990 2020-05-15 04:35:12
mysql语句实现:

检测重复号码,售价低的state状态设置为0。
只保留售价最高的那一条state=1

haoma price state

11111111 100 1
22222222 200 1
33333333 300 1
44444444 400 1

11111111 500 1
22222222 600 1
33333333 700 1
44444444 800 1

11111111 900 1
22222222 1000 1
33333333 1100 1
44444444 1200 1
...全文
113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_40243990 2020-05-16
  • 打赏
  • 举报
回复
谢谢兄弟!最后一个搞定了!非常感谢!
带我飞的云 2020-05-16
  • 打赏
  • 举报
回复
引用 4 楼 阿代公主 的回复:
UPDATE tttt AS A
INNER JOIN (SELECT haoma,MAX(price) AS price FROM tttt GROUP BY haoma) AS B
ON A.haoma=B.haoma
SET a.`state` = CASE WHEN a.`price` = B.price THEN 0 ELSE 1 END


0, 1 写反了
带我飞的云 2020-05-16
  • 打赏
  • 举报
回复
UPDATE tttt AS A
INNER JOIN (SELECT haoma,MAX(price) AS price FROM tttt GROUP BY haoma) AS B
ON A.haoma=B.haoma
SET a.`state` = CASE WHEN a.`price` = B.price THEN 0 ELSE 1 END
带我飞的云 2020-05-16
  • 打赏
  • 举报
回复
UPDATE tttt AS A
LEFT JOIN (SELECT haoma,MAX(price) AS price FROM tttt GROUP BY haoma) AS B
ON A.haoma=B.haoma
SET a.`state` = CASE WHEN a.`price` = B.price THEN 1 ELSE 0 END
三年丿 2020-05-15
  • 打赏
  • 举报
回复
不考虑重复情况的话,可以这么写

update tb_test A
JOIN (SELECT * FROM(SELECT haoma,MAX(price) AS price FROM tb_test GROUP BY haoma)AS S) AS B
ON A.haoma=B.haoma
SET A.State=CASE WHEN A.price=B.price THEN 1 ELSE 0 END;
三年丿 2020-05-15
  • 打赏
  • 举报
回复
price售价重复呢,怎么保留一条

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧