我有三个表,它们与下图相匹配:
我需要从join_表中删除一些数据,其中标签列(表右)和名称列(表左)符合一些条件。
我的解决方案是使用临时表:
create temporary table if not exists data_for_deletion
(select jt.id
from join_table jt
left join table_left tableLeft on jt.table_left_id = tableLeft.id
left join table_right tableRight on jt.table_right_id = tableRight.id
where tableLeft.name = 'name' and tableRight.label = 'label');
delete from join_table where id in (select id from data_for_deletion);
我的问题是:有没有其他方法可以在不创建临时表的情况下执行此类删除?
您应该能够使用MySQL的多表DELETE
语法:
DELETE jt
FROM join_table jt
JOIN table_left tl ON jt.table_left_id = tl.id
JOIN table_right tr ON jt.table_right_id = tr.id
WHERE tl.name = 'name' AND tr.label = 'label'
请注意,由于您有一个WHERE
子句,它依赖于表左
和表右
中的列,因此使用左联接
没有意义,因为它无论如何都会转换为内部联接
(请参阅手册)。
问题内容: 我想在Oracle数据库中创建一个临时表 就像是 在SQL Server中 然后用选择语句填充它 是否有可能? 谢谢 问题答案: 是的,Oracle有临时表。这是描述它们的AskTom文章的链接,这是oracle的官方CREATE TABLE文档。 但是,在Oracle中,只有临时表中的 数据 是临时的。该表是其他会话可见的常规对象。在Oracle中频繁创建和删除临时表是一种不好的做法
数据库显示 show databases; mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | app_blogcurder | | auth_demo | | canzhieps
问题内容: 朋友们, 我正在创建一个临时表。该脚本可能会运行几次,因此我需要检查临时表是否存在,然后将其删除。我已经在下面编写了代码,但是两次运行脚本时出现错误,表明该表已经存在: 数据库中已经有一个名为“#lu_sensor_name_19”的对象 。 当Tablle不为null时,似乎不会返回true。我究竟做错了什么? 问题答案: Temp #Tables是在tempdb中创建的。试试这个:
问题内容: 我有一个表,其中的行带有范围的开始和结束编号,例如 等等.. 我想创建一个临时表(或表变量/ cte等),其中每个数字都有一行,并且它们之间的范围也包括在内-即给出上述示例,我希望看到一个具有以下行的表: 谁能指出我朝着实现这一目标的快捷方式的方向?我考虑过以某种方式使用数字表,但是我正在查看的表具有> 200m行,而我没有那么大的数字表! 任何帮助深表感谢。提前致谢。 问题答案:
问题内容: 假设我有某种类型: 现在我想基于这种类型创建一个临时表,我该怎么做? 同样,从此:基于用户定义的类型创建表: 问题答案: [\Pure.Krome的答案)显示了如何使用表变量而不是#temp表。如果您确实想要基于已知表类型的#temp表(而不必知道列名/定义),则可以说: 现在,应与表类型的表结构匹配,减去约束(以及从SQL Server 2014开始的边际有用的二级索引)。 当然,随
我是JSP的新手,我正在尝试创建一个web界面,用户可以在该界面中输入他们想要删除的信息,并且该信息将在数据库表中删除。 在这里,他们应该输入和,然后应该删除具有两个指定ID的任何数据。但是,它不是从表中删除的。我有个例外 数组索引越界 下面是我的代码: