INNER JOIN(内连接):取得两个表中存在连接匹配关系的记录

$sql="SELECT * FROM subject as a INNER JOIN e_user as b ON a.uid=b.id";

//也可以用以下方法
SELECT article.aid,article.title,user.username FROM article,user WHERE article.uid = user.uid

LEFT JOIN (左外连):会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录

$sql="SELECT * FROM subject as a LEFT JOIN e_user as b ON a.uid=b.id";

在上面的例子中,对于右表中没有对应匹配的数据记录,其所有的列都被置为 NULL,因此要查询这部分记录(如在上面例子中体现为查找 id=4 这类无对应用户的记录),可以附加 IS NULL 条件:

$sql="SELECT * FROM subject as a LEFT JOIN e_user as b ON a.uid=b.id WHERE b.id IS NULL";

RIGHT JOIN(右外连): 会取得右表(table2)全部记录,即使左表(table2)并无对应匹配记录

$sql="SELECT * FROM subject as a RIGHT JOIN e_user as b ON a.uid=b.id";

除了常用的两个表连接之外,SQL(MySQL) JOIN 语法还支持多表连接

SELECT article.aid,article.title,user.username,type.typename FROM article INNER JOIN user
ON article.uid=user.uid INNER JOIN type ON article.tid=type.tid
//LEFT JOIN
SELECT article.aid,article.title,user.username,type.typename FROM article LEFT JOIN user
ON article.uid=user.uid LEFT JOIN type ON article.tid=type.tid
//RIGHT JOIN
SELECT article.aid,article.title,user.username,type.typename FROM article RIGHT JOIN user
ON article.uid=user.uid RIGHT JOIN type ON article.tid=type.tid

子查询

子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用

$sql = "SELECT * FROM e_user WHERE id IN (SELECT uid FROM subject WHERE fun>80)";
//等同于 SELECT * FROM e_user WHERE id IN(1,2)

标量子查询

 $sql = "SELECT * FROM e_user WHERE id=(SELECT min(uid) FROM subject)";

WHERE 表达式中运算符说明:

参数说明:
运算符 说明
= 等于
!= 不等于,某些数据库系统也写作 <>
> 大于
< 小于
>= 大于或等于
<= 小于或等于
BETWEEN … AND … 介于某个范围之内,例:WHERE age BETWEEN 20 AND 30
NOT BETWEEN …AND … 不在某个范围之内
IN(项1,项2,…) 在指定项内,例:WHERE city IN('beijing','shanghai')
NOT IN(项1,项2,…) 不在指定项内
LIKE 搜索匹配,常与模式匹配符配合使用
NOT LIKE LIKE的反义
IS NULL 空值判断符
IS NOT NULL 非空判断符
NOT、AND、OR 逻辑运算符,分别表示否、并且、或,用于多个逻辑连接。
优先级:NOT > AND > OR
% 模式匹配符,表示任意字串,例:WHERE username LIKE '%user'

查询之后插入到另一个表

INSERT INTO other(id,sid,name,age,subject,total) SELECT null,s.id, s.name,s.age,j.subject,j.total from SUBJECT as j LEFT JOIN student as s on s.id=j.sid

最新文章

  1. 天河微信小程序入门《四》:融会贯通,form表单提交数据库
  2. 当shiro不进入自定义realm的权限认证方法时
  3. java.lang.NoClassDefFoundError:org/apache/commons/lang/exception/NestableRuntimeException错误的解决
  4. 【HDU1730】Northcott Game(Nim问题)
  5. pwd, cd, ls, touch, mkdir, rmdir, rm
  6. ECharts 在同一个页面添加多个图表 并 给图表绑定事件
  7. T430 Windows 8 的USB3.0无法识别
  8. Android游戏开发:物理游戏之重力系统开发--圆形自由落体Demo
  9. win32 api ShouCursor 根据内部计数器 是否&gt;= 0 决定是否 显示光标,每true时计数器+1,每false-1
  10. UVa 11995 I Can Guess the Data Structure!
  11. hdoj 2035 人见人爱A^B
  12. Practice Round China New Grad Test 2014 报告
  13. zoom与scale的异同
  14. Spring基础篇——bean的自动化装配
  15. Redis 过期键删除策略
  16. [Swift]LeetCode939. 最小面积矩形 | Minimum Area Rectangle
  17. OO第二单元总结之线程大冒险第一关
  18. C# 获得本机IP、端口等信息地址以及服务器IP信息
  19. DLNg[结构化ML项目]第二周迁移学习+多任务学习
  20. LeetCode--107--二叉树的层次遍历II

热门文章

  1. Ubuntu 创建启动器
  2. poj1483 It&#39;s not a Bug, It&#39;s a Feature!
  3. kuryr环境搭建
  4. Hadoop YARN介绍
  5. Highcharts中如何外部修改pointStart
  6. 一、spark入门之spark shell:wordcount
  7. Kafka connect快速构建数据ETL通道
  8. grunt--自常用配置文件--js/样式压缩打包,sass工具整合使用
  9. 数娱科技:借助VR技术可让你了解自己的大脑
  10. JavaScript - 平稳退化