问题描述:
表 my_numbers 的 num 字段包含很多数字,其中包括很多重复的数字。
你能写一个 SQL 查询语句,找到只出现过一次的数字中,最大的一个数字吗?
对于上面给出的样例数据,你的查询语句应该返回如下结果:
+---+
|num|
+---+
| 9 |
DDL语句:
/*
Navicat Premium Data Transfer
Source Server : 我的项目
Source Server Type : MySQL
Source Server Version : 80025
Source Host : localhost:3306
Source Schema : day01
Target Server Type : MySQL
Target Server Version : 80025
File Encoding : 65001
Date: 23/09/2021 23:00:26
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for my_numbers
-- ----------------------------
DROP TABLE IF EXISTS `my_numbers`;
CREATE TABLE `my_numbers` (
`id` int(0) NOT NULL AUTO_INCREMENT,
`num` int(0) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of my_numbers
-- ----------------------------
INSERT INTO `my_numbers` VALUES (1, 8);
INSERT INTO `my_numbers` VALUES (2, 8);
INSERT INTO `my_numbers` VALUES (3, 3);
INSERT INTO `my_numbers` VALUES (4, 3);
INSERT INTO `my_numbers` VALUES (5, 1);
INSERT INTO `my_numbers` VALUES (6, 4);
INSERT INTO `my_numbers` VALUES (7, 5);
INSERT INTO `my_numbers` VALUES (8, 6);
INSERT INTO `my_numbers` VALUES (9, 7);
INSERT INTO `my_numbers` VALUES (10, 7);
INSERT INTO `my_numbers` VALUES (11, 9);
SET FOREIGN_KEY_CHECKS = 1;
sql拿去就可以运行:
SELECT
m.num
FROM
my_numbers m
GROUP BY
m.num
HAVING
COUNT( * ) = 1
ORDER BY
m.num DESC
LIMIT 1
运行结果:
我要刷100道算法题,第62道