【发布时间】:2011-08-21 02:10:14
【问题描述】:
我有以下 MySQL 查询,我正在使用 PHP (5.2)。
DELETE t1.*, t3.* FROM
forum_posts AS t1,
forum_topics AS t2,
user_points AS t3
WHERE t1.topic_id = t2.topic_id
AND t2.deleted = 1
AND t1.post_id = t3.id
AND t3.type = 'post'
AND t1.post_author = t3.profile_author
但是它也没有按照我的预期运行(什么都没有发生!),让我解释一下:
我打算让查询执行的是删除 forum_posts 表中的所有行和/或(我说“和/或”,因为这将取决于行是否存在)删除表中的所有行user_points table => [如果创建帖子的主题已被删除(为了您的信息以避免混淆,它实际上只是“隐藏”,我们通过检查它是否等于 @987654324 来确定这一点@)]。
我希望查询结构能自行解释,topic_id 主要用于JOIN 将表放在一起。
查询运行良好(没有给出 MySQL 或 PHP 错误,所以我认为语法没问题?),我检查了数据库和存在的已删除主题(deleted 列设置为 @ 987654328@) 和他们的帖子也存在于这些主题中(因此并非没有数据)。
感谢所有回复。
【问题讨论】:
-
尝试将
DELETE替换为SELECT,看看是否得到了要删除的行。 -
@Vache,我刚刚尝试过,它什么也没返回,然后我尝试删除 user_points 部分并返回帖子的行,因为这些点不存在我认为那是问题,他们有什么方法可以检查它是否存在于查询中?