子查询是在一个查询的内部包括另一个查询的查询方式。
select *
from `comment`
where cmtDate >
(select cmtDate from `comment` where cmtAuthor = '东东1')
IN案例
查询名字中包含’东‘的作者评论过的所有新闻
SELECT * FROM news
WHERE id
IN
(SELECT newsId FROM `comment` WHERE cmtAuthor LIKE '%东%')
NOT IN案例
查询名字中不包含’东‘的作者评论过的所有新闻
SELECT * FROM news
WHERE id
NOT IN
(SELECT newsId FROM `comment` WHERE cmtAuthor LIKE '%东%')
SELECT * FROM news
WHERE id =
ANY
(SELECT newsId FROM `comment` WHERE cmtAuthor LIKE '%东%')
SELECT * FROM news
WHERE id >=
ALL
(SELECT newsId FROM `comment` WHERE cmtAuthor LIKE '%东%')
/*
Navicat Premium Data Transfer
Source Server : 192.168.0.102
Source Server Type : MySQL
Source Server Version : 50720
Source Host : 192.168.0.102
Source Database : test_select
Target Server Type : MySQL
Target Server Version : 50720
File Encoding : utf-8
Date: 09/23/2021 08:36:24 AM
*/
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for `comment`
-- ----------------------------
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment` (
`cmtId` int(4) NOT NULL AUTO_INCREMENT,
`newsId` int(4) NOT NULL,
`cmtContent` varchar(100) NOT NULL,
`cmtDate` datetime NOT NULL,
`cmtIP` varchar(20) NOT NULL,
`cmtAuthor` varchar(20) DEFAULT NULL,
PRIMARY KEY (`cmtId`),
KEY `newsId` (`newsId`),
CONSTRAINT `comment_ibfk_1` FOREIGN KEY (`newsId`) REFERENCES `news` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of `comment`
-- ----------------------------
BEGIN;
INSERT INTO `comment` VALUES ('1', '1', '有深度', '2019-01-01 00:00:00', '192.168.1.2', '张三1'), ('2', '1', '有深度', '2018-12-03 00:00:00', '192.168.1.2', '张三2'), ('3', '1', '有深度', '2019-12-03 00:00:00', '192.168.1.2', '张三3'), ('4', '2', '娱乐圈真乱!', '2018-12-13 00:00:00', '192.168.1.3', '小豆豆1'), ('5', '2', '娱乐圈真乱!', '2018-12-13 00:00:00', '192.168.1.3', '小豆豆2'), ('6', '3', '我喜欢孙俪', '2018-12-20 00:00:00', '192.168.1.4', '东东1'), ('7', '3', '我喜欢孙俪', '2018-12-20 00:00:00', '192.168.1.4', '东东2'), ('8', '3', '我喜欢孙俪', '2018-12-20 00:00:00', '192.168.1.4', '东东3'), ('9', '3', '我喜欢孙俪', '2018-12-20 00:00:00', '192.168.1.4', '东东4'), ('10', '1', '我喜欢孙俪', '2018-12-20 00:00:00', '192.168.1.4', '东东5'), ('16', '1', '有深度', '2018-12-03 00:00:00', '192.168.1.2', '张三'), ('17', '1', '我爱邓超', '2018-12-27 00:00:00', '192.168.1.5', '张三1'), ('18', '1', '有深度', '2018-12-03 00:00:00', '192.168.1.2', '张三'), ('19', '1', '有深度', '2018-12-03 00:00:00', '192.168.1.2', null), ('20', '1', '有深度', '2018-12-03 00:00:00', '192.168.1.2', '');
COMMIT;
-- ----------------------------
-- Table structure for `news`
-- ----------------------------
DROP TABLE IF EXISTS `news`;
CREATE TABLE `news` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`newsTitle` varchar(20) NOT NULL,
`topicId` int(4) NOT NULL,
PRIMARY KEY (`id`),
KEY `topicId` (`topicId`),
CONSTRAINT `news_ibfk_1` FOREIGN KEY (`topicId`) REFERENCES `topic` (`topicId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of `news`
-- ----------------------------
BEGIN;
INSERT INTO `news` VALUES ('1', '切尔西', '1'), ('2', '正发朋友圈怒怼《演员的品格》', '2'), ('3', '太饿了!孙俪机智骗取某某同学午餐充饥', '2');
COMMIT;
-- ----------------------------
-- Table structure for `topic`
-- ----------------------------
DROP TABLE IF EXISTS `topic`;
CREATE TABLE `topic` (
`topicId` int(4) NOT NULL AUTO_INCREMENT,
`topicName` varchar(20) NOT NULL,
PRIMARY KEY (`topicId`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of `topic`
-- ----------------------------
BEGIN;
INSERT INTO `topic` VALUES ('1', '体育'), ('2', '娱乐'), ('3', '经济');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;