表架构
表名: file_manager_folder
行:id
,parentId
,name
我的查询模拟将一个文件夹移动到另一个文件夹,并使用IN(?)接受一个数组。
如果不存在具有相同parentId和名称的文件夹,我希望更新仅“移动”文件夹。您在任何普通文件系统下期望的行为。
因此,例如:
UPDATE file_manager_folder set parentId = 54 where id IN( '1','2',3')
将会是一个查询,不检查任何有关parentId和名称的信息…但是如何使左联接起作用。
这是我尝试过的..完全不起作用。
SELECT * FROM
file_manager_folders as a
LEFT JOIN file_manager_folders as b on a.id = b.id
WHERE b.id IS NOT NULL and a.id IN("1","2","3") and a.parentId = 54
UPDATE table1 LEFT JOIN table2 SET t1.x = t2.y ON condition WHERE conditions
所以,你要只有当目标父文件夹下的同名文件夹不移动文件夹 不 存在:
UPDATE file_manager_folder f1
LEFT OUTER JOIN file_manager_folder f2
ON f1.name = f2.name AND f2.parentId = 54
SET f1.parentId = 54
WHERE f2.name IS NULL AND f1.id IN (1,2,3);
联接条件在目标父目录下搜索具有相同名称的文件夹。WHERE子句测试不存在这样的文件夹(仅当外部联接找不到匹配项时,f2.name才为null)。
问题内容: 我有一个NewsStories表格,剩下一些相关表格。每个新闻故事可以具有多个图像,类别和地址。因此查询实质上是: 通常每个故事有一些图像和地址,以及1或2个类别。NewsStories表包含大约10,000条文章。 问题在于性能相当慢(大约15-20秒,尽管它的确变化很大,有时甚至低至5秒)。 我想知道是否有更好的方法来组织查询以加快查询速度(我对SQL还是很陌生)。 尤其是,给定故
问题内容: 我必须更新一个值,该值由3个表的联接返回。 例子: 我想用其他在上述条件下加入的值来更新表的字段值。 如何在MS SQL Server中执行此操作? 问题答案: 为了清楚起见…该子句可以引用该子句中指定的表别名。所以在这种情况下是有效的 通用示例
问题内容: 我是PostgreSQL的新手,正在尝试从SQL Server转换查询。 我有一个表Users,其中包括bUsrActive,bUsrAdmin和sUsrClientCode列。我想更新用户并设置bUsrActive = false,如果不存在另一个具有相同sUsrClientCode的用户,其中bUsrAdmin = true和bUsrActive = true。 在SQL Serv
我有两个问题。两者都很好用: 第二个查询: 联合本: 工作正常,但我想添加左联接: DoSend工作...#1222-使用的SELECT语句具有不同的列数 你能帮我把这件事办好吗?
问题内容: 我想在具有多个联接的语句中更新表。虽然我知道联接的顺序并不重要(除非您使用的是优化程序提示),但我还是以某种最直观的方式对它们进行了排序。但是,这导致我要更新的表不是我开始使用的表,并且我无法更新它。 我想做的一个虚拟例子是: 这里有许多关于使用联接进行更新的帖子,但是它们总是首先更新表。我知道这在SQL Server中是可能的,希望在MySQL中也可能! 问题答案: MySQL中的多
问题内容: 假设我们有下表t1和t2: 我们希望找到以下结果: 这基本上是右连接与左连接的并集。以下代码有效,但感觉很笨拙: 有没有更好的方法来实现这一目标? 问题答案: