您现在的位置是: 网站首页> MySQL MySQL
MySQL子查询简单使用
Smile
2020-03-19 23:55:13
MySQL
阅读:2217
简介子查询指一个查询语句嵌套在另一个查询语句内部的查询,在mysql使用过程中,考虑到性能问题,比较少用,但是在需要进行比较复杂的查询时,也会考虑使用子查询实现,比如删除重复数据,删除不符合其他表字段值得记录
1、查询文章栏目的pid为3的文章
SELECT cid,title FROM article WHERE cid in (SELECT id FROM article_type WHERE pid=3)
输出:
+-----+--------------------------------+
| cid | title |
+-----+--------------------------------+
| 7 | 致青春的一封信 |
| 7 | 没伞的孩子 |
| 7 | 美丽无暇的太阳 |
| 7 | 仰望星空 |
| 7 | 陌上花开,可缓缓归矣 |
| 7 | 未来的路 |
| 7 | 青春之歌 |
| 8 | 陌上花开,可缓缓归矣 |
| 9 | 憧憬未来 |
+-----+--------------------------------+
9 rows in set (0.00 sec)
2、查询没有文章栏目的文章
SELECT a.cid,a.title
FROM article a
WHERE NOT EXISTS(
SELECT aty.id
FROM article_type aty
WHERE a.`cid`=aty.`id`
);
输出:
+-----+-----------------------------+
| cid | title |
+-----+-----------------------------+
| 0 | PHP常用正则匹配规则 |
+-----+-----------------------------+
1 row in set (0.00 sec)
3、查询点赞数最高的文章
SELECT title,praise
FROM article
WHERE praise=(
SELECT MAX(praise)
FROM article
);
输出:
+-----------------+--------+
| title | praise |
+-----------------+--------+
| 没伞的孩子 | 45 |
+-----------------+--------+
1 row in set (0.00 sec)
4、查询文章标题重复的数据
SELECT count('*') AS num,title
FROM article
GROUP BY title
HAVING num > 1
5、删除文章表中重复的数据,保留ID最小的文章
DELETE
FROM article
WHERE id
NOT in (
SELECT id
FROM(
SELECT MIN(id) AS id
FROM article
GROUP BY title
) AS temp
);
很赞哦! (0)
上一篇:MySQL的进阶操作与使用