当前位置: 首页 > 面试题库 >

MySQL,使用联接删除查询

黄弘盛
2023-03-14
问题内容

有人可以帮助我了解此查询的问题吗:

DELETE FROM noteproject 
INNER JOIN note ON noteproject.noteID = note.noteID
INNER JOIN person ON note.personID = person.personID
WHERE noteID = '#attributes.noteID#' 
  AND personID = '#attributes.personID#'

问题答案:

之所以无法使用,是因为MySQL不按照您尝试的方式在delete语句中支持连接语法。

使用:

DELETE FROM NOTEPROJECT
 WHERE noteID = '#attributes.noteID#' 
   AND note_id IN (SELECT n.note_id 
                     FROM NOTE n
                    WHERE n.personID = '#attributes.personID#')

…或使用EXISTS:

DELETE FROM NOTEPROJECT
 WHERE noteID = '#attributes.noteID#' 
   AND EXISTS (SELECT NULL
                 FROM NOTE n
                WHERE n.note_id = note_id
                  AND n.personID = '#attributes.personID#')


 类似资料:
  • 所以我有一个相关的子查询,我读到这不是最有效的方法。因此,我想将此查询转换为内部联接查询。 我试过这样的方法: 在对数据库“db”执行SQL查询时导致 我在这里的所有搜索结果都产生了大致相同的查询(与我尝试的类似)

  • 问题内容: 这是创建我的表的脚本: 在我的PHP代码中,删除客户端时,我要删除所有项目帖子: posts表仅没有外键。我想删除已通过项目中的帖子。 现在无法正常工作,因为没有帖子被删除。 问题答案: 您只需要指定要从表中删除条目: 编辑:有关更多信息,您可以看到此替代答案

  • 问题内容: 我正在尝试使用Doctrine QueryBuilder来执行以下SQL查询: 我有这个 但我得到: 错误消息附带的DQL是: 因此,连接似乎完全被省略了。 问题答案: 最好使用IN条件而不是迭代来运行查询。 好处:运行速度更快,无需迭代 缺点:您无法加入preRemove 对于激烈的“放置在哪里”的辩论,如果愿意,可以将其放在控制器中。这完全取决于您。但是,如果您将代码放入专用的学说

  • 问题内容: 有2个表,和,并且我需要从中删除数据。 是唯一“连接”表的东西。我已经尝试过此脚本,但是它不起作用。 我已经试过了: 问题答案: 在第一行中添加到。 尝试:

  • 问题内容: 我一直在尝试使它工作一段时间,但似乎无法正常工作,也许甚至没有可能,我想做的就是使用诸如此类的方法来执行MySQL连接查询我发现的例子… 但这似乎根本不起作用,可以提供的任何帮助将是非常好的,谢谢! 问题答案: 尝试 MySQL进行字符串连接的方式与其他数据库不同,因此,如果要移植应用程序,则需要有一个备用版本用作连接运算符,如Michael在另一个答案中提到的那样。但是,此操作符在M

  • 问题内容: 表架构 表名: 行:,, 我的查询模拟将一个文件夹移动到另一个文件夹,并使用IN(?)接受一个数组。 如果不存在具有相同parentId和名称的文件夹,我希望更新仅“移动”文件夹。您在任何普通文件系统下期望的行为。 因此,例如: 将会是一个查询,不检查任何有关parentId和名称的信息…但是如何使左联接起作用。 这是我尝试过的..完全不起作用。 问题答案: 所以,你要只有当目标父文件