首页 / MYSQL / MySQL的-删除,更新与派生表?
MySQL的-删除,更新与派生表?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL的-删除,更新与派生表?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1597字,纯文字阅读大概需要3分钟。
内容图文
![MySQL的-删除,更新与派生表?](/upload/InfoBanner/zyjiaocheng/882/9aaf249695164c0f90eeff2829e06734.jpg)
我刚刚研究了FROM子句和mysql中的派生表,并且大多数网站都提供了使用SELECT命令的示例
示例SELECT * FROM(SELECT * FROM usrs)as u WHERE u.name =’john’
但是,当我尝试使用delete或update命令时,它似乎不起作用.
例子DELETE FROM(SELECT * FROM usrs)as u WHERE u.name =’john’
1064-您的SQL语法有误;检查与您的MySQL服务器版本对应的手册以获取正确的语法,以便在u WHERE u.name =’john’处使用在(SELECT * FROM usrs)附近
当u SET u.lname =’smith’时更新(SELECT * FROM usrs)WHERE u.name =’john’
1288 UPDATE的目标表e无法更新
因此,派生表不适用于delete或update命令吗?还是有办法使其工作.
我不是要编写用于更新和删除的表名,而是要编写一个获取记录并对该记录执行删除操作的子查询?在mysql中有可能吗?
更新我必须删除一条记录,并且我有三个表,该记录可能存在于任何表中
我的方法从第一个表行删除影响吗?退出:否则检查第二个表行是否生效?退出:否则检查第三个表
但是如果我使用UNION ALL,我可以这样做
从中删除(选择*从tb1联合所有选择*从tb2联合全部选择*从tb3)e作为e.
但是此查询似乎不起作用,现在有人可以告诉我在要搜索多个表的情况下如何删除或更新记录.任何帮助是极大的赞赏.
解决方法:
您不能直接从子查询中删除,但是您仍然可以使用它,只是需要在JOIN中使用它:
DELETE usrs
FROM usrs
INNER JOIN (
SELECT * FROM usrs WHERE name = 'john'
) t ON usrs.Id = t.Id
或者您可以使用IN:
DELETE usrs
WHERE ID IN (
SELECT ID
FROM usrs
WHERE name = 'John'
)
这样说,在这个例子中,我不知道为什么要一个子查询:
DELETE usrs WHERE name = 'John'
根据评论进行编辑.要同时从多个表中删除,您可以具有多个DELETE语句,也可以使用如下所示的内容:
delete t1, t2, t3
from (select 'john' as usr) t
left join t1 on t.usr=t1.usr
left join t2 on t.usr=t2.usr
left join t3 on t.usr=t3.usr
内容总结
以上是互联网集市为您收集整理的MySQL的-删除,更新与派生表?全部内容,希望文章能够帮你解决MySQL的-删除,更新与派生表?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。