#问题在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
DELETE t FROM osc_table_a t WHERE
(
osc_table_a.row1,
osc_table_a.row2
(IN ) )。
选择a.row 1,a.row2 FROM (
选择* from OSC _ table _ ATM P1 group by tmp1. row 1,tmp1.row2havingcount(tmp1.id ) 1
(a ) a
)
AND t.id NOT IN (
选择b.id from (
选择min (tmp2.id ) idfromosc _ table _ at MP2 group by tmp2. row 1,tmp2.row2havingcount ) tmp2. id ) 1
(b ) b
);
#问题
在mysql中使用DELETE别名问题
写deletetfromosc _ table _ at where…deletefromosc _ table _ at where…时,语法错误* SELECT * FROM osc_table_a b; (正确地说,可以使用表别名。)
* DELETE FROM osc_table_a b; (错误)
* DELETE b FROM osc_table_a b; (正确)
[ err ] 1093-you can ' tspecifytargettable ' OSC _ table _ a ' forupdateinfromclause
清除SELECT a.row1,a.row2 FROM、 a或SELECT b.id FROM、 b中的错误。
效果与将查询结果保存到临时表中后检索相同。