在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`
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
这里我只是输出了两条数据