-
update user1 set over=‘齐天大圣’ where user1.user_name in ( select b.user_name from user1 a join user2 b on a.user_name = b.user_name); ERROR 1093错误 不能更新from语句中出现的表字段 解决办法: 通过使用join进行联合更新 update user1 a join select b.user_name from user1 a join user2 b on a.user_name = b.user_name) b on a.user_name = b.user_name set a.over=‘齐天大圣’;查看全部
-
1、常见的sql语句类型
DDL:数据定义语言;
TPL:事务处理语言;
DCL:数据控制语言;
DML:数据操作语言(最常用到的)select\insert\update\delete
查看全部 -
@MySQL---FULL JOIN 全连接
1.FULL JOIN:是LEFT OUTER JOIN和RIGHT OUTER JOIN的合集。
显示出两张表中的所有数据,当一张表的连接谓词无法满足时,则另一张表的字段在该表中为NULL。2.MySQL不支持FULL JOIN的解决方法:
#通过UNION将左连接和右连接的结果合并 SELECT select_expressions FROM TABLE A LEFT JOIN TABLE B ON A.key=B.key UNION ALL SELECT select_expressions FROM TABLE A RIGHT JOIN TABLE B ON A.key=B.key;
3.UNION与UNION ALL的区别
UNION 将自动删除重复项。
UNION ALL 将所有的数据都列出来。查看全部 -
@MySQL---SQL语句分类
DDL:数据定义语言 --- CREATE、ALTER、DROP、TRUNCATE
TPL:事务处理语言 --- COMMIT、ROLLBACK、SAVEPOINT、SET TRANSACTION
DCL:数据控制语言 --- GRANT、REVOKE
DML:数据操作语言 --- SELECT、UPDATE、INSERT、DELETE查看全部 -
DDL 数据定义语言 create alter 负责数据结构定义与数据库对象定义 TPL 事务处理语言 确保被DML语句影响的表和行得以及时更新,包括开始事务,提交事务,回滚 DCL 数据控制语言 用来设置数据库用户或角色权限的,包括GRANT、DENY、REVOKE DML 数据操作语言 增删改查查看全部
-
/*用到的表*/ DROP TABLE IF EXISTS `friends`;/*悟空朋友表*/ CREATE TABLE `friends` ( `id` int(3) NOT NULL,/*sql server中不能指定int长度*/ `user_name` varchar(30) default NULL, `type` varchar(30) default NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `friends` VALUES ('1', '孙悟空', 'friends'); INSERT INTO `friends` VALUES ('2', '牛魔王', 'friends'); INSERT INTO `friends` VALUES ('3', '蛟魔王', 'friends'); INSERT INTO `friends` VALUES ('4', '鹏魔王', 'friends'); INSERT INTO `friends` VALUES ('5', '狮驼王', 'friends'); DROP TABLE IF EXISTS `qujing`;/*取经表*/ CREATE TABLE `qujing` ( `id` int(3) NOT NULL, `user_name` varchar(30) default NULL, `type` varchar(30) default NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `qujing` VALUES ('1', '唐僧', 'qujing'); INSERT INTO `qujing` VALUES ('2', '猪八戒', 'qujing'); INSERT INTO `qujing` VALUES ('3', '孙悟空', 'qujing'); INSERT INTO `qujing` VALUES ('4', '沙僧', 'qujing');查看全部
-
把两个join的表看做检索出所有字段,然后构成一个虚拟表,再对他做select、update之类的数据操作。 比如: 将没有取经的结拜兄弟全部杀死。 update user1 a right join user2 b on a.user_name = b.user_name set b.over = "被杀" where a.user_name is null; (user1 a right join user2 b on a.user_name = b.user_name)就可以看做一个join后的虚拟表,包含两个表的所有字段。 这样不是更好理解了么。。。查看全部
-
FULL JOIN:是LEFT OUTER JOIN和RIGHT OUTER JOIN的合集。显示出两张表中的所有数据,当一张表的连接谓词无法满足时,则另一张表的字段在该表中为NULL。 MySQL不支持FULL JOIN 解决方法: 通过UNION将左连接和右连接的结果合并 SELECT select_expressions FROM TABLE A LEFT OUTER JOIN TABLE B ON A.key=B.key UNION ALL SELECT select_expressions FROM TABLE A RIGHT OUTER JOIN TABLE B ON A.key=B.key; UNION会自动删除重复项,刷选出部分字段的时候要注意了,如果刷选出来的两个字段的值完全相同就会剩下一个。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将左右两个查询的结果的所有的资料都列出来,无论资料值有无重复。查看全部
-
刚仔细思考了一下最后一课的SQL,与大家分享一下,希望大家帮忙找出错误。 select d.user_name ,c.ctimestr,kills from (select user_id ,timestr ,kills ,( select count(*) from user_kills b where b.user_id = a.user_id and a.kills <= b.kills) as cnt from user_kills a group by user_id,timestr,kills) c join user1 d on c.user_id = d.id where cnt <= 2 首先将第一个From后面的子查询看成一个普通表,这样就是一个普通的多表连接查询了。 where cnt < 2便是筛选条件,选择出顺序是1,2前两条记录。然后在看括号里面里层括号这里所做的就是查询出这条记录在分组中根据kills排序的顺序,但是为啥是count(*)呢? 假设孙悟空打怪 3,5,12 我用3,5,12分别与3,5,12比较 3 3,5,12 小于3的有3条记录 5 3,5,12 小于5的有2条记录 12 3,5,12 小于12的有1条记录 如此count(*)代表的就是顺序了,如果需要正序,只要将<= 改成>=就好了查看全部
-
直接写 update user1 a inner join user2 b on a.user_name = b.user_name set a.over='齐天大圣'; 不是更好么,没必要这么麻烦吧。查看全部
-
select tablea.username,tablea.over,tableb.over from tablea inner join tableb on tabllea.username=tableb.username查看全部
-
老师的例子,讲的是“查询悟空的结拜兄弟中哪些人没有去取经”的人,但语句查询的是“去取经的人”。意思反了。left join那节课也是同样反了。查看全部
-
select a.user_name,b.timestr,b.kills from user1 a join user_kills b ON a.id = b.user_id join user_kills c ON c.user_id = b.user_id Group by a.user_name,b.timestr,b.kills Having b.kills = MAX(c.kills);查看全部
-
join从句:: inner | full outer | left outer | right outer | cross 内连接inner join: select a.user_name,a.over,b.over from user1 a join user2 b on a.user_name=b.user_name;查看全部
-
使用Join优化聚合子查询查看全部
举报
0/150
提交
取消