美文网首页PHP经验分享PHP开发
PHP面试之复杂MySQL语句的编写

PHP面试之复杂MySQL语句的编写

作者: openoter | 来源:发表于2018-04-20 15:17 被阅读22次

真题

有A(id,sex, par, cl, c2)、B(id,age,c1,c2)两张表,其中A.id与B.id关联,现在要求写出一条SQL语句,将B中age>50的记录的c1,c2更新到A表中统一记录中的c1,c2字段中。

update A,B set A.c1 = B.c1, A.c2=AB.c2 where A.id=B.id and B.age > 50;

# 连接
update A inner join B on A.id=B.id set A.c1 = B.c1, A.c2=AB.c2 where B.age > 50;

MySQL的关联update操作

关联更新:

update A,B set A.c1 = B.c1, A.c2=AB.c2 where A.id=B.id

# 连接
update A inner join B on A.id=B.id set A.c1 = B.c1, A.c2=AB.c2 where  ... 

延伸:MySQL的关联查询语句

六种关联查询:

  • 交叉连接(cross join)
  • 内连接(inner join)
  • 外连接(left join/right join)
  • 联合查询(union/union all)
  • 全连接(full join):MySQL中不支持

交叉连接(cross join)

select * from A,B(,C) 

# 或者
select * from A cross join B(cross join C)

没有任何关联条件,结果是笛卡尔积,结果集会很大,没有意义,很少使用。

内连接(inner join)

select * from A,B where A.id = B.id 

# 或者
select * from A inner join B on A.id = B.id

多表中同时符合某种条件的数据记录的集合

分类:

  • 等值连接:on A.id = B.id
  • 不等值连接:on A.id > B.id
  • 自连接:select * from A T1 inner join A T2 on T1.id = T2.pid

inner join可以缩写成join

外连接(left join/right join)

左外连接:left outer join,已左表为主,先查询出左表,按照on后的关联条件匹配右表,没有匹配到的用NULL填充,可以简写成left join

右外连接:right outer join,已左表为主,先查询出右表,按照on后的关联条件匹配左表,没有匹配到的用NULL填充,可以简写成right join

联合查询(union/union all)

select * from A union select * from B union ...  

把多个结果集集中在一起,union前的结果为基准,需要注意的是联合查询的列数要相等,相同的记录行会合并。

如果使用union all,不会合并重复的记录行。

全连接(full join):MySQL中不支持

MySQL实现全连接,可以使用left joinunionright join联合使用。

select * from A left join B on A.id =B.id union select * from A right join B on A.id = B.id

嵌套查询

建议使用,结果不好把控

用一条SQL语句的结果作为另外一条SQL语句的条件

select * from A where id in (select id from B)

相关文章

  • PHP面试之复杂MySQL语句的编写

    真题 有A(id,sex, par, cl, c2)、B(id,age,c1,c2)两张表,其中A.id与B.id...

  • php操作mysql语句

    mysql语句 php操作mysql语句

  • 2018-03-20

    MYSQL查询语句 MYSQL复杂操作语句 MYSQL多表查询方法 函数部分

  • 从0到1学习网络安全 【PHP基础-If...Else】

    PHP If...Else 语句 条件语句用于根据不同条件执行不同动作。 PHP 条件语句 在您编写代码时,经常会...

  • MySQL的语句的执行顺序

    我们编写的语句格式如下: MySQL的执行顺序如下: 虽然,我们写的SELECT语句在前,但是在MySQL的执行顺...

  • mysql

    常用语句 更新系统 下载PHP,MySQL,nginx mysql-server 数据库服务 mysql-clie...

  • BigData-MySQL总结大全(一)苏暖人

    BigData之MySQL总结大全 MYSQL常用的基本语句 MYSQL常用的基本语句 例:SELECT TOP ...

  • mysql 练习

    MySql面试前必须练习到熟练的--部分语句有错;有些子查询可以用外连接代替 MySQL查询语句练习题(面试时可能...

  • dvwa安装教程

    概述 DVWA (Damn Vulnerable Web Application) 是用 PHP+MySQL 编写...

  • MySQL 增删改查

    MySQL之增删改查 前言:以下是MySQL最基本的增删改查语句,很多IT工作者都必须要会的命令,也是IT行业面试...

网友评论

    本文标题:PHP面试之复杂MySQL语句的编写

    本文链接:https://www.haomeiwen.com/subject/iptzkftx.html