gpt4 book ai didi

mysql - 以下删除查询我做错了什么?

转载 作者:行者123 更新时间:2023-11-29 01:29:59 25 4
gpt4 key购买 nike

我想在 MYSQL 中创建一个过程,它将每小时运行一次,它将删除 Document 表中的所有条目。如果这些用户在发布文档时未满 18 岁,我想删除一年后由法国人发布的所有访问级别为 5 的文档

下面的代码给我一个错误并告诉我检查我的语法。有没有人对如何修复代码以使其成为一个工作程序有任何想法?

CREATE EVENT hourlydelete
ON SCHEDULE EVERY 1 HOUR
DO CALL delete_Document();

DELIMITER $$
CREATE PROCEDURE delete_Document()
BEGIN
DELETE FROM Document
WHERE (Document.idPerson = Person.idPerson AND Person.Country = 'France' AND Document.AccessLevel = 5)
AND ((DATEDIFF(Document.Posted,Person.DateOfBirth) / 365) < 18)
AND ((DATEDIFF(NOW(), Document.Posted)/365) > 3)
ORDER by Document.idPerson

END
$$
DELIMITER;

最佳答案

移除

ORDER by Document.idPerson

因为您没有使用 SELECT查询没有 ORDER BY 的结果集.

DELETE 的多表语法MySQL中的语句是

DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
WHERE t1.id = t2.id AND t2.id = t3.id;

记录从 t1 中删除的位置和 t2 (在 USING 之前)但不是 t3 .

所以,你实际上需要使用

DELETE FROM Document USING Document INNER JOIN Person
WHERE ...

这确保只有 Document记录被删除并且Person仅用于指定标准。另外,请注意 ORDER BYLIMIT不能与多表一起使用 DELETE

关于mysql - 以下删除查询我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18296020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com