您现在的位置是: 网站首页> MySQL MySQL

MySQL子查询简单使用

Smile 2020-03-19 MySQL 阅读:1012

简介子查询指一个查询语句嵌套在另一个查询语句内部的查询,在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)

文章评论

站点信息