在mysql查询中有五种子查询他们分别是:
(1) where(用于条件)
(2) having(通常用于分组之前)
(3) group by(是分组的时候)
(4) order by(排序)
(5)limit (用于限制结果集)
在where中我们经常用到的有
与 && and
或 || or
非 !not
比较符有
,=,!=,<>,<=,>=
通常还有我们的
between and
in
一般用法是
SELECT b.`bookId`,b.`bookName`
FROM book b , student s
WHERE b.`stuId`=s.`stuId`
SELECT b.`bookId`,b.`bookName`
FROM book b , student s
WHERE b.`stuId`<1
SELECT b.`bookId`,b.`bookName`
FROM book b , student s
WHERE b.`stuId`>=1
having(通常用于分组之前)
having和where的用法差不多,不过where的判断在从内存中读取的时候进行判断,having是在分组之前的时候进行判断。
SELECT * FROM book b HAVING b.`bookId`>1
where 和 having也可以连用,应该用在where的后面
SELECT * FROM
book b WHERE b.`bookId`<1
HAVING b.`bookId`>1
group by用于分组
SELECT b.`bookId`,b.`bookNo`
FROM book b
GROUP BY b.`bookId`
一般情况下group应该和函数配合使用才用意义
SELECT MAX(b.`stuId`),b.`bookNo`
FROM book b GROUP BY b.`bookId`
![496b68614ea166748c7241d3983b7e94.png](https://i-blog.csdnimg.cn/blog_migrate/507ef608527ee3755f56961a61d83782.jpeg)
order by排序
order by b.bookId 默认升序排列
order by b.bookId desc 降序排列
order by b.bookIdasc 升序排列
order by rand() 随机排序
limit 限制结果数
limit [offset] N
其中offset 可以写也可以不用
offset代表偏移量
SELECT MAX(b.`stuId`),b.`bookNo` FROM book b GROUP BY b.`bookId` LIMIT 2
这里我只是输出了两条数据
![fe807a7fdc644c3bf3095cc78eeb3f43.png](https://i-blog.csdnimg.cn/blog_migrate/6853b774a33e686220154ab30a74961f.jpeg)