大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
##问题 mysql数据库表osc_table_a中出现了重复记录,需要通过sql来去重,仅留下最早插入的记录。
表osc_table_a:
id row1 row2 row3
1 123 abc *****
2 123 def *****
3 123 abc *****
4 456 xyz *****
5 456 xyz *****
去重结果 id row1 row2 row3
1 123 abc *****
2 123 def *****
4 456 xyz *****
##完整sql
<!-- lang: sql -->
DELETE t FROM osc_table_a t WHERE
(
osc_table_a.row1,
osc_table_a.row2
)IN(
SELECT a.row1, a.row2 FROM(
SELECT * FROM osc_table_a tmp1 GROUP BY tmp1.row1, tmp1.row2 HAVING COUNT(tmp1.id)> 1
) a
)
AND t.id NOT IN(
SELECT b.id FROM (
SELECT MIN(tmp2.id) id FROM osc_table_a tmp2 GROUP BY tmp2.row1, tmp2.row2 HAVING COUNT(tmp2.id)> 1
) b
);
##问题
-
mysql中DELETE使用别名问题
如果 DELETE t FROM osc_table_a t WHERE…… 写为 DELETE FROM osc_table_a t WHERE…… 会报语法错误
* SELECT * FROM osc_table_a b;(正确,可以使用表别名) * DELETE FROM osc_table_a b;(错误) * DELETE b FROM osc_table_a b;(正确)
-
[Err] 1093 – You can’t specify target table ‘osc_table_a’ for update in FROM clause
如果去掉 SELECT a.row1, a.row2 FROM(……)a 或者 SELECT b.id FROM (…..)b的报错。
作用和将查询结果先存入临时表,然后取出来是一样的效果。
转载于:https://my.oschina.net/ijustdoit/blog/332993
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186986.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...