昨天在某个群里看到有个兄弟,提问mysql相关的问题,本来困意十足的我一下子来了精神,正想着如何来抵抗这困意呢。
连续发了两个要求写查询语句的问题,第一个是下面这样的:
CREATE TABLE `MyTable` (
`keycol` BIGINT NOT NULL DEFAULT 0,
`f1` BIGINT NOT NULL DEFAULT 0,
`f2` BIGINT NOT NULL DEFAULT 0,
`f3` BIGINT NOT NULL DEFAULT 0,
`f4` BIGINT NOT NULL DEFAULT 0,
`f5` BIGINT NOT NULL DEFAULT 0,
`f6` BIGINT NOT NULL DEFAULT 0,
`f7` BIGINT NOT NULL DEFAULT 0,
`f8` BIGINT NOT NULL DEFAULT 0,
`f9` BIGINT NOT NULL DEFAULT 0,
`f10` BIGINT NOT NULL DEFAULT 0
);
INSERT INTO `MyTable` VALUES (1, 12, 23, 12, 52, 85, 85, 56, 10, 23, 11),
(2, 4, 53, 111, 52, 85, 85, 45, 10, 23, 111),
(3, 3, 25, 118, 65, 83, 8, 0, 190, 24, 120),
(4, 543, 55, 134, 65, 83, 4, 3, 194, 29, 122),
(4, 543, 35, 144, 65, 0, 4, 45, 0, 29, 122);
SELECT `f1`, `f2`, `f3`, `f4`, `f5`, `f6`, `f7`, `f8`, `f9`, `f10` FROM `MyTable`;
+-----+----+-----+----+----+----+----+-----+----+-----+
| f1 | f2 | f3 | f4 | f5 | f6 | f7 | f8 | f9 | f10 |
+-----+----+-----+----+----+----+----+-----+----+-----+
| 12 | 23 | 12 | 52 | 85 | 85 | 56 | 10 | 23 | 11 |
| 4 | 53 | 111 | 52 | 85 | 85 | 45 | 10 | 23 | 111 |
| 3 | 25 | 118 | 65 | 83 | 8 | 0 | 190 | 24 | 120 |
| 543 | 55 | 134 | 65 | 83 | 4 | 3 | 194 | 29 | 122 |
| 543 | 35 | 144 | 65 | 0 | 4 | 45 | 0 | 29 | 122 |
+-----+----+-----+----+----+----+----+-----+----+-----+
查询f1-f10有且只有一个列为0的记录,结果如下
+--------+----+----+-----+----+----+----+----+-----+----+-----+
| keycol | f1 | f2 | f3 | f4 | f5 | f6 | f7 | f8 | f9 | f10 |
+--------+----+----+-----+----+----+----+----+-----+----+-----+
| 3 | 3 | 25 | 118 | 65 | 83 | 8 | 0 | 190 | 24 | 120 |
+--------+----+----+-----+----+----+----+----+-----+----+-----+
阅读全文>>