我在MariaDB中运行这个select,它按预期工作,它只是一个带有exists
的select:
select * from pred_loan_defaults d
where exists (select 1 from pred_loan_defaults d2
where d.exec_id = d2.exec_id and d.loan_identifier = d2.loan_identifier
and d2.default_status = 1 and d.prediction_date > d2.prediction_date)
order by loan_identifier, prediction_date
现在,我尝试删除选中的行,因此我调整了语句:
delete from pred_loan_defaults d
where exists (select * from pred_loan_defaults d2
where d.exec_id = d2.exec_id and d.loan_identifier = d2.loan_identifier
and d2.default_status = 1 and d.prediction_date > d2.prediction_date);
但我得到一个错误:
SQL错误[1064] [42000]:(conn=6)您的SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,了解使用near 'd的正确语法delete
语句有什么问题?
1条答案
按热度按时间xdnvmnnf1#
在单表删除中,不能在表名后面使用别名。
您需要使用
JOIN
而不是WHERE EXISTS
。