亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

PHP面試之復雜MySQL語句的編寫

標簽:
PHP MySQL 面試

真题

有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)



作者:openoter
链接:https://www.jianshu.com/p/0dbc3aa7763f

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消